我正在制作薪资计划,其中一个选项是检查当前用户的数据。我想允许用户输入员工的ID或名称来检索此信息。
Scanner userChoice = new Scanner(System.in);
System.out.println("Enter employee ID or full name");
String checkHEmp = userChoice.next();
int checkHempID = userChoice.nextInt();
if (checkHempID ==3|| checkHEmp == "Jill Jones") {
HourlyEmployee jones = new HourlyEmployee();
jones.jJones();
}
在此示例中,HourlyEmployee是一类每小时员工,jJones()是该类中包含其中一名员工信息的方法。当我进入" 3" (身份证)或"吉尔琼斯"事后没有任何事情发生。
编辑:为jJones()
添加了方法public void jJones() {
double hourlyWagesJones = 16.45;
double hoursWorkedJones = 48;
System.out.println("Employee ID: 3");
System.out.println("Last name: Jones");
System.out.println("First name: Jill");
System.out.println("Date Hired: 1/22/2011");
System.out.println("Hours Worked: " + hoursWorkedJones);
System.out.println("Hourly Wages: $" + hourlyWagesJones);
double totalEarnedJones = new Double(hourlyWagesJones * hoursWorkedJones);
System.out.println("Total earned: $" + totalEarnedJones);
}
答案 0 :(得分:4)
好的,
String checkHEmp = userChoice.next();
期待String
,您输入的String
为" Jill Jones",但Scanner
的默认分隔符为{{1} }这意味着它会读取它找到的第一个" "
,因此只有" "
会存储在Jill
中,这当然不是您在{{1}中检查的内容声明。
如果您只传递号码checkHEmp
,或在if
之前传递,则会再次收到错误,因为3
会首先查找String
并会找到一个Scanner
。
你能做的就是替换:
String
与
int
并删除
String checkHEmp = userChoice.next();
或者如果你想保留它,你必须输入名称第一个,按Enter键转到新行,输入数字并再次按回车。
您还需要更改
String checkHEmp = userChoice.nextLine();
到
int checkHempID = userChoice.nextInt();`
你可以做的另一件事是:
if (checkHempID == 3 || checkHEmp == "JillJones")
这样您需要 EITHER 输入if (checkHempID == 3 || checkHEmp.equals("JillJones"));
或Scanner userChoice = new Scanner(System.in);
System.out.println("Enter employee ID or full name");
String checkHEmp = "";
int checkHempID = 0;
if(userChoice.hasNextInt())
checkHempID = userChoice.nextInt();
else
checkHEmp += userChoice.nextLine();
if (checkHempID == 3|| checkHEmp.equals("Jill Jones")) {
//do whatever
}
希望这有帮助。