2016-03-22 3 views
0
import java.util.Scanner; 

public class Taxes { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     System.out.printf("Enter the employees first name: "); 

     Scanner input = new Scanner(System.in); 

     String fName = input.nextLine(); 

     System.out.printf("Enter the employees last name: "); 

     String lName = input.nextLine(); 

     System.out.printf("Enter the hours worked for the week: "); 

     double hours = input.nextDouble(); 

     System.out.printf("Enter the hourly pay rate: "); 

     double pay = input.nextDouble(); 

     double gross = hours * pay; 

     System.out.printf("Enter the federal tax withholding: "); 

     double fed = input.nextDouble(); 
     double fTax = gross * fed; 

     System.out.printf("Enter the state tax withholding: "); 

     double state = input.nextDouble(); 
     double sTax = gross * state; 

     double Ttax = sTax + fTax; 

     double net = gross - Ttax; 



     System.out.printf(
       "Employee Name:%s %s\n\nHours Worked:%s hours\n\nPay Rate:$%.2f\n\nGross pay:$%.2f\n\nDeductions: \n\n\tFederal Withholding:(%.2f%%)$%.2f \n\n" 
         + "\tState Withholding:(%.2f%%)$%.2f\n\n\tTotal Witholding:$%.2f\n\nNet Pay:$%.2f", 
       fName, lName, hours, pay, gross, fed, fTax, state, sTax, Ttax, net); 

     input.close(); 
    } 
} 

Мне нужно объявить еще две переменные, чтобы получить удержание федерального и государственного налогов в процентах.Форматирование процентов с помощью printf

Пример Они показывают, как (00.20%) Мне нужно их вернуть в целом процента, как (20,00%)

Я попытался объявить новую переменную в нижней части, такие как:

statewit = sTax * 100; 
fedwit = fTax * 100; 

чтобы получить проценты для возврата, как я хочу, но он, как правило, добавляет эту сумму к сети в конце.

Любая помощь будет оценена очень, спасибо!

+0

Java == Javascript :-( – Neal

+0

Я понял! это – jgills

+1

Если да, отправьте ответ и отметьте его как действительный, чтобы люди с такими же проблемами могли извлечь выгоду из вашего опыта! – tommus

ответ

1

Попробуйте это.

double percent=12.34; 
System.out.printf("%.2f%%", percent); 
// or in different convention "percent as number *100" 
System.out.printf("%.2f%%", percent*100.0); 

EDIT: Ваш вопрос можно разделить на две части:

  1. конвенции, в которых используются номера (обычный или процент масштабируется * 100)

  2. Real форматирование строки

BTW Ваш код длинный и имеет очень мало ФОРМАТИРОВАНИЯ.

Java не имеет специального типа для процентных значений. Типы: двойные, BigDecimal могут быть использованы с его поведением, или целые типы тоже, если программист сохранить целое соглашение

EDIT: благодаря КОСТИС Aivalis, запятая исправил :)

+0

Добавить запятую между строкой формата и переменной: System.out.printf ("%. 2f %%", percent); –

+0

@CostisAivalis thanks –