私はCS1を使用するJavaに比較的慣れていません。私たちはScanner
数週間sを使用してきましたが、私は通常の状況でそれらに満足しています。とはいえ、理解できないところに行き着き、調査で答えを得ることができませんでした。
クラス用に作成しているPayRollプログラムがあります。与えられた3つのクラス変数を使用します。
employeeLastName
、hoursWorkded
、payRate
。
3つの個別のセッターメソッドと、3つすべてを設定する1つのセッターを作成しました(4つのメソッドすべてでスキャナーを使用)。
スキャナーを使用しemployeeLastName
て独自のセッターを取得するのに問題はありませんが、3つを取得するメソッドで実行すると、名前をスキャンする代わりに、プロンプトが出力され、hoursWorked
入力にスキップします。そこに入力した内容に誤りはないと思います。
この時点での私の最大の質問は、2つの異なるスキャナー/ヘルパーメソッドを使用してセッターを実行することさえ可能かどうか、または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;