2016-10-18 10 views
1

私は宿題でEclipseを使用しています。私は本当に苦労しています。目標は、ユーザが自分の名前、勤務時間、賃金率、源泉徴収された連邦および州の税金を入力した給与計算プログラムを作成し、計算された控除額と納付額を出力します。Javaのprintfステートメントでエラーが発生する

出力を示すのにprintlnステートメントが使用されていましたが、先生はSystem.out.printf関数を使用することを望んでいて、まったく動作しません。 printlnステートメントを使用すると、すべての値が入力されますが、何らかの理由でprintfに同じ処理を実行できません。私は何が欠けていますか?

import java.util.Scanner; 

public class Payrolls 
{ 
    public static void main(String []args) 
    { 


    Scanner input = new Scanner(System.in); 

    System.out.print("Enter employee first name: "); 
    String employeeFirst = input.nextLine(); 

    System.out.print("Enter employee last name: "); 
    String employeeLast = input.nextLine(); 

    System.out.print("Enter number of hours worked this week: "); 
    int hoursWorked = input.nextInt(); 

    System.out.print("Enter hourly pay rate of the employee: "); 
    double payRate = input.nextDouble(); 

    System.out.print("Enter federal tax withholding rate: "); 
    double fedTax = input.nextDouble(); 

    System.out.print("Enter state tax withholding rate: "); 
    double stateTax = input.nextDouble(); 

    System.out.println(" "); 
    System.out.println(" "); 
    //System.out.printf("%-20s %s\n", employeeFirst, employeeLast); 
    System.out.println("Name: " + employeeFirst +" " +employeeLast); 

    System.out.println("Hours Worked:" + hoursWorked); 

    System.out.println("Pay Rate:" + payRate); 



    double grossPay; 
    grossPay = payRate * hoursWorked; 

    System.out.println("Gross Pay:" + grossPay); 

    double deductions; 
    deductions = grossPay * fedTax; 

    System.out.println("\tDeductions:"); 
    System.out.println("\t\tFederal Witholding %: $" + deductions); 

    double statTax; 
    statTax = grossPay * stateTax; 

    System.out.println("\t\tState Witholding %: $" + statTax); 

    double totalDeduction; 
    totalDeduction = deductions + statTax; 

    System.out.println("\t\tTotal Deduction: $" + totalDeduction); 


    double netPay; 
    netPay = grossPay - totalDeduction; 

    System.out.println("Net Pay:" + netPay); 
    } 
} 
+3

私にとってはうまく動作します(JDK8、IntelliJ、F24)。どのJDKやIDEを使用していますか? – Mureinik

+0

どのバージョンのjavaをお使いですか? –

+0

[こちら](http://stackoverflow.com/questions/14008466/how-to-use-system-out-printf)をご覧ください。 – Karthik

答えて

0
  • のprintfのMethodeのは、Javaのバージョン1.5から提供されています:私はprintf機能を使用する場合、それは私に

    "Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
        The method printf(Locale, String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, String) 
    at Payrolls.main(Payrolls.java:31)" 
    

    の誤差を与えることはここに私のコードです。 jdkのバージョンが1.5以上であることを確認してください。

  • あなたの誤差が可変引数、より具体的にprintfを添加したとして、あなたはJDK 1.5を使用して、または上記していることを確認してくださいprintfのメソッドの最初の引数はexmaple here
+0

しかし、 'printf'の最初の引数は' Locale'である必要はありません。 2つの 'printf'メソッドがあります - 最初の引数が' Locale'で、もう1つが 'String'です。 –

0

を参照してくださいロケールタイプでなければならないことを示していますそのリリースで。 JDK 1.5でコンパイルするだけでは不十分です。また、JRE 1.5以降を使用してプログラムを実行する必要があります。

また、printfためJavadocs参照:一つは、その最初のパラメータとしてStringを必要とする他はLocaleインスタンスを必要とします。

次のようにそれを呼び出す:

System.out.printf("%s\n", employeeFirst, employeeLast);

(あなたはコードがないコメントしているものである)動作するはずです。

+0

JDK 1.8を使用していますが、私は学期が始まった8月下旬にEclipseとJDKをダウンロードしたことを知っています。 – Carlos

+0

'javac -version'と' java -version'で確認してください。コンパイラの設定がビルド*に設定されていて、* target * JDK 8になっていることを確認してください(あなたがビルドしてEclipseを実行している場合)。 –

+0

@atcあなたの最後のコメントが正しい答えだと思います。 OPはJDK 1.5以上では** **コンパイルされているように見えますが、**はJDK 1.4で**を実行しています。 –

関連する問題