带有int和string的条件句

时间:2014-08-10 22:25:50

标签: java string int conditional

我正在制作薪资计划,其中一个选项是检查当前用户的数据。我想允许用户输入员工的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);   
}

1 个答案:

答案 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 }

希望这有帮助。