2016-10-18 2 views
1

Я использую Eclipse в домашнем задании, и я действительно борюсь. Цель состоит в том, чтобы написать программу расчета заработной платы, в которой пользователь вводит свое имя, отработанные часы, уровень оплаты, федеральный и государственный налог, а затем выводит расчетную информацию об их суммах, а также их чистую зарплату.Операция Java printf, дающая ошибки

Я использовал то, что было знаком с println инструкциями, чтобы показать результат, но учитель хочет, чтобы мы использовали функцию System.out.printf, и я не могу заставить ее работать вообще. Если я использую операторы println, все значения заполняются, но по какой-то причине я не могу получить printf, чтобы сделать то же самое. Что мне не хватает? Если я использую функцию 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)" 

Вот мой код:

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. Убедитесь, что ваша версия jdk больше или равна 1,5.
  • Ваша ошибка говорит вам, что первый аргумент метода PRINTF должен быть типом Locale увидеть exmaple here
+0

Но первый аргумент 'printf' НЕ должен быть' Locale'. Существуют два метода 'printf': первый аргумент -' Locale', а другой - 'String'. –

0

Пожалуйста, убедитесь, что вы используете JDK 1.5 или выше, в качестве переменной длины и более конкретно printf был добавлен в этом выпуске. Недостаточно просто скомпилировать JDK 1.5, вам также потребуется запустить вашу программу с помощью JRE 1.5+.

Кроме того, см Javadocs для printf: один требует String в качестве первого параметра, а другой требует Locale экземпляра.

Назвать это так:

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

должен работать (что вы комментировал код делает).

+0

Если я не сумасшедший (какая возможность, учитывая, насколько я сумасшедший, я просто управляюсь простым заявлением, не работающим) Я использую JDK 1.8. Я знаю, что загрузил eclipse и JDK еще в конце августа, когда начался семестр. – Carlos

+0

Проверьте с помощью 'javac -version' и' java -version'. Подтвердите (если вы создаете и запускаете через eclipse), что его конфигурация компилятора установлена ​​в * build * и, таким образом, * target * JDK 8. –

+0

@atc Я считаю, что ваш последний комментарий - правильный ответ. OP представляется ** компиляцией ** с JDK 1.5 или лучше, но ** работает ** с JDK 1.4. –

Смежные вопросы