写了段简单代码,从控制台循环输入几个学生的个人信息(信息很简单,只包括学号、姓名和成绩),发现一个问题,在Eclipse这种集成开发环境中输入时,尤其需要输入汉字时,光标默认出现在一行的开头,要手工把光标移到“正确位置”;所谓正确位置,对于使用形如System.out.print("请输入姓名:");的语句,就把光标调到本行行尾也就是冒号之后,再输入汉字,对于使用形如System.out.println("请输入姓名:");的语句,就把光标调整到下一行的开头,再输入汉字,否则可能(毕竟真理是相对的,也可能是我操作不当,或者暂时懂得太少)会出现Eclipse的Console无法输入任何东西以及狂敲Enter也没反应的情况;输入数字及其他字符时,即便光标出现在一行的开始处,也可以直接进行输入。当在Windows的Dos中执行时,光标一定会严格出现在正确的位置,该出现在行尾的一定在行尾闪烁,该出现在下一行开头的一定在下一行开头闪烁,所以这种情况下要输入汉字、字符(串)和数字的直接输入即可。
这是我练习java实现简单单向链表时遇到的问题,以下是代码,大家可以尝试,有问题可以交流,共同进步。
class Node
{
int IDnumber;
int score;
String name;
Node next;
public Node(int IDnumber, String name, int score)
{
this.IDnumber = IDnumber;
this.name = name;
this.score = score;
this.next = null;
}
}
public class LinkedList {
private Node first;
private Node last;
public boolean isEmpty()
{
return first == null;
}
public void print()
{
Node current = first;
while(current != null)
{
System.out.println("["+current.IDnumber+" " + current.name+" "+current.score+"]");
current = current.next;
}
System.out.println();
}
public void insert(int IDnumber,String name, int score)
{
Node newNode=new Node(IDnumber, name, score);
if(this.isEmpty())
{
first = newNode;
last=newNode;
}
else {
last.next=newNode;
last=newNode;
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class LinkedListTest {
public static void main(String[] args) throws IOException
{
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
int num;
String name;
int score;
System.out.println("请输入2个学生数据: ");
LinkedList linkedList = new LinkedList();
for(int i=1; i<3; i++)
{
System.out.print("请输入学号:");
num = Integer.parseInt(buf.readLine());
System.out.print("请输入姓名:");
name=buf.readLine();
System.out.print("请输入成绩:");
score=Integer.parseInt(buf.readLine());
linkedList.insert(num, name, score);
System.out.println("------------------");
}
System.out.println("单向链表是否为空:"+linkedList.isEmpty());
System.out.println("学生成绩:");
System.out.println("学号姓名成绩=============");
linkedList.print();
}
}