我对Java服用CS1相对较新。我们已经使用Scanner
几个星期了,在典型的情况下我对它们非常满意。我找到了一个我无法弄清楚但无法通过研究得到答案的地方。
我有一个PayRoll程序,我正在为课堂建设。我们将使用给出的三个类变量:
employeeLastName
,hoursWorkded
,payRate
。我制作了3个单独的setter方法以及一个设置所有三个的setter(使用扫描仪使用所有四种方法)。
使用扫描仪在我自己的setter中获取employeeLastName
没有问题,但是当我使用获取三者的方法时,不是扫描名称而是打印提示并跳到hoursWorked
输入。我不认为我输入的内容有任何错误。
此时我最大的问题是,如果甚至可以使用两种不同的扫描仪/辅助方法来执行设置器,或者nextLine()
在与其他扫描仪实用程序一起使用时只是表现得很有趣。以下是与此相关的重要代码摘录。如果需要其他任何东西,请告诉我。在此先感谢您的帮助!
private double requestDoubleFromUser( Scanner sc , String prompt )
{
double userInput;
System.out.print( prompt );
userInput = sc.nextDouble();
return userInput;
}
private String requestNameFromUser( Scanner sc , String prompt )
{
String nameInput;
System.out.print( prompt );
nameInput = sc.nextLine();
return nameInput;
/***** Test of Employee 2 *****/
displayEmployeeData( "\n Default Pay Period Info for Employee 2", employeePayRoll2 );
System.out.println( "\n Please complete the employee's information to receive a period summary. " );
employeePayRoll2.setPayRoll( requestNameFromUser( sc, "\n Employee Name: " ) ,
requestDoubleFromUser( sc, "\n Hours Worked: " ) ,
requestDoubleFromUser( sc, " Rate of Pay: " ) );
displayEmployeeData( "\n Pay Period Data for Employee 2", employeePayRoll2 );
这是不起作用的部分。以下是二传手:
public void setEmployeeLastName( String employeeLastName )
{
this.employeeLastName = employeeLastName;
}
public void setHoursWorked( double hoursWorked )
{
this.hoursWorked = hoursWorked;
}
public void setPayRate( double payRate )
{
this.payRate = payRate;
}
public void setPay( double hoursWorked , double payRate )
{
this.hoursWorked = hoursWorked;
this.payRate = payRate;
}
public void setPayRoll( String employeeLastName , double hoursWorked , double payRate )
{
this.employeeLastName = employeeLastName;
this.hoursWorked = hoursWorked;
this.payRate = payRate;
答案 0 :(得分:0)
您不需要创建用于询问用户输入的方法。只需使用一个扫描程序对象创建一个主类(保持简单)并收集所有这些数据:
Scanner sc = new Scanner(System.in);
double hoursWorked, payRate;
String empLastName;
System.out.println(prompt); //enter name
empLastName = sc.nextLine();
System.out.println(prompt); //enter hrs worked
hoursWorked = sc.nextDouble();
System.out.println(prompt();//enter payRate
payRate = sc.nextDouble();
然后,一旦掌握了所有数据,请将其传递给您的setter:
employeePayRoll2.setPayRoll(empLastName, hoursWorked, payRate);