黑马程序员技术交流社区

标题: 求指导一个小问题 [打印本页]

作者: 陈世涛    时间: 2012-7-16 19:32
标题: 求指导一个小问题
public class ArrayListTest1 {


public static void main(String[] args) throws IOException {


EmpManage mowz=new EmpManage();
while(true){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("1:添加员工");
System.out.println("2:查询员工");
System.out.println("3:修改工资");
System.out.println("4:删除员工");
System.out.println("5:工资排序");
System.out.println("6:退出系统");

if(br.readLine().equals("1"))
{
System.out.println("请输入工号");
String id=br.readLine();
System.out.println("请输入姓名");
String name=br.readLine();
System.out.println("请输入工资");
int sal=Integer.parseInt(br.readLine());
Emp emp=new Emp(id,name,sal);
mowz.addEmp(emp);

}
else if(br.readLine().equals("2"))
{
System.out.println("请输入要找的员工的工号");
mowz.showInfo(br.readLine());

}
else if(br.readLine().equals("3"))
{
System.out.println("请输入要修改工资的工号");
String id=br.readLine();
System.out.println("请输入新的工资");
int sal=Integer.parseInt(br.readLine());
mowz.updateSal(id, sal);

}
else if(br.readLine().equals("4"))
{
System.out.println("请输入要删除员工的工号");
String id=br.readLine();
mowz.delEmp(id);

}
else if(br.readLine().equals("5"))
{
System.out.println("排序后的工资:");
mowz.sortSal();

}
else if(br.readLine().equals("6"))
{
System.exit(0);
}
}

}

}

我按提示输入 1 的时候 是行的。
我输入 2 和别的东西就不行了。
求高手指导下。
作者: 张_涛    时间: 2012-7-16 19:58
注意readLine()这个方法,你判断的时候,游标是不是也会跟着移动呢?
当你不等于1的时候,再readline(),还能读到你的数据么?
因此,是不是先定义一个变量保存readLine()的返回值,然后再判断。
这种错误比较常见,以后注意点,像Iterator也会有类似的场景。
作者: 鲍霄霄    时间: 2012-7-16 22:36
我不是太清楚你为什么要那么写,但我觉得你这样写会更好点:
public class ArrayListTest1 {


public static void main(String[] args) throws IOException {


EmpManage mowz=new EmpManage();
while(true){
Scanner scan=new Scanner(System.in);
System.out.println("1:添加员工");
System.out.println("2:查询员工");
System.out.println("3:修改工资");
System.out.println("4:删除员工");
System.out.println("5:工资排序");
System.out.println("6:退出系统");

int a = scan.nextInt();

switch(a){
        case 1 :
        System.out.println("请输入工号");
            String id = scan.next();
        System.out.println("请输入姓名");
            String name = scan.next();
                System.out.println("请输入工资");
                int sal = scan.nextInt();
                Emp emp=new Emp(id,name,sal);
        mowz.addEmp(emp);
                break;
        case 2 :
                System.out.println("请输入要找的员工的工号");
        mowz.showInfo(scan.next());
                break;
        case 3 :
        System.out.println("请输入要修改工资的工号");
        String id=scan.next();
        System.out.println("请输入新的工资");
        int sal=scan.nextInt();
        mowz.updateSal(id, sal);
                break;
        case 4 :
        System.out.println("请输入要删除员工的工号");
        String id=scan.next();
        mowz.delEmp(id);
                break;
        case 5 :
        System.out.println("排序后的工资:");
        mowz.sortSal();
                break;
        case 6 :
        System.exit(0);
    }
  }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2