我对学习 CS1 的 Java 比较陌生。我们已经使用Scanner
s 几个星期了,在典型情况下我对它们非常满意。我遇到了一个我无法弄清楚的地方,也无法通过研究获得答案。
我有一个正在为课堂构建的薪资计划。我们将使用给定的三个类变量:
employeeLastName
,hoursWorkded
,payRate
.
我制作了 3 个单独的 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;