2017-02-01 4 views
1

제가 잘못하고있는 것을 알고 있습니다. 나는 무엇을 모르겠습니다. 모든 달러 값이 미국 통화 형식이어야합니다. System.out.format을 통화 포맷터와 함께 사용하면 문제가 있음을 알 수 있습니다. 자바에서 많은 경험이 없으며이를 수행하는 데 훨씬 좋은 방법이있을 것입니다.Currency Formatter가 System.out.format과 작동하지 않습니다.

출력이 이와 유사해야합니다. enter image description here

import java.util.*; 
import java.lang.*; 
import java.text.*; 

public class Proj2 
{ 
    public static void main(String[] args) 
    { 
     Scanner s = new Scanner(System.in); 
     NumberFormat currency = NumberFormat.getCurrencyInstance(); 

     String input = ""; 
     int degree = 0; 
     int year = 0; 
     int age = 0; 
     int retirement = 0; 
     final int doctorate = 84396; 
     final int masters = 69732; 
     final int bachelor = 59124; 
     final int highSchool = 35256; 
     final int noDegree = 25636; 



     System.out.print("1 = No Degree"); 
     System.out.print("\n"); 
     System.out.print("2 = High school Degree"); 
     System.out.print("\n"); 
     System.out.print("3 = Bachelor's Degree"); 
     System.out.print("\n"); 
     System.out.print("4 = Masters Degree"); 
     System.out.print("\n"); 
     System.out.print("5 = Doctorate Degree"); 
     System.out.print("\n"); 

     System.out.print("\n"); 
     System.out.print("Enter the number that corresponds to your degree: "); 
     input = s.nextLine(); 
     degree = Integer.parseInt(input); 

     if (degree < 1 || degree > 5) 
     { 
      System.out.print("You entered an invalid menu choice."); 
      System.out.print("Please re-run the program and enter in a valid choice."); 
      System.exit(0); 
     } 

     System.out.print("\n"); 
     System.out.print("Enter the current year: "); 
     input = s.nextLine(); 
     year = Integer.parseInt(input); 

     System.out.print("Enter your current age: "); 
     input = s.nextLine(); 
     age = Integer.parseInt(input); 

     System.out.print("Enter planned age of retirementd: "); 
     input = s.nextLine(); 
     retirement = Integer.parseInt(input); 
     System.out.print("\n"); 

     System.out.print("\n"); 

     if (degree == 1) 
     { 
      System.out.print("Based on current statistics and no degree:"); 
      System.out.print("\n"); 
      System.out.print("Your annual salary will be " +currency.format(noDegree)); 
      System.out.print("\n"); 
      System.out.format("Retiring at age %d in %d you will make a total of %d", retirement, (year + (retirement - age)), currency.format(noDegree * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("With a HighSchool degree, you can earn %d more than if you had no Degree.", currency.format(highSchool * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("With a Bachelor's degree, you can earn %d more than if you had no Degree.", currency.format(bachelor * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("With a Masters degree, you can earn %d more than if you had a no Degree.", currency.format(masters * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("With a Doctarites degree, you can earn %d more than if you had a no Degree.", currency.format(doctorate * (retirement - age))); 
      System.out.print("\n"); 
     } 
     else if (degree == 2) 
     { 
      System.out.print("Based on current statistics and High School degree:"); 
      System.out.print("\n"); 
      System.out.print("Your annual salary will be " +currency.format(highSchool)); 
      System.out.print("\n"); 
      System.out.format("Retiring at age %d in %d you will make a total of %d", retirement, (year + (retirement - age)), currency.format(highSchool * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had no Degree.", currency.format((highSchool * (retirement - age)) - (noDegree * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("With a Bachelor's degree, you can earn %d more than if you just had a High School degree.", currency.format(bachelor * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("With a Masters degree, you can earn %d more than if you just had a High School degree.", currency.format((masters * (retirement - age)) - (highSchool * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("With a Doctarites degree, you can earn %d more than if you just had a High School degree.", currency.format((masters * (retirement - age)) - (highSchool * (retirement - age)))); 
      System.out.print("\n"); 
     } 
     else if (degree == 3) 
     { 
      System.out.print("Based on current statistics and Bachelor's degree:"); 
      System.out.print("\n"); 
      System.out.print("Your annual salary will be " +currency.format(bachelor)); 
      System.out.print("\n"); 
      System.out.format("Retiring at age %d in %d you will make a total of %d", retirement, (year + (retirement - age)), currency(bachelor * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had no Degree.", currency.format((bachelor * (retirement - age)) - (noDegree * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a High School degree.", currency.format((bachelor * (retirement - age)) - (highSchool * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("With a Masters degree, you can earn %d more than if you just had a High School degree.", currency.format((masters * (retirement - age)) - (bachelor * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("With a Doctarites degree, you can earn %d more than if you just had a High School degree.", currency.format((masters * (retirement - age)) - (bachelor * (retirement - age)))); 
      System.out.print("\n"); 
     } 
     else if (degree == 4) 
     { 
      System.out.print("Based on current statistics and Masters degree:"); 
      System.out.print("\n"); 
      System.out.print("Your annual salary will be " +currency.format(masters)); 
      System.out.print("\n"); 
      System.out.format("Retiring at age %d in %d you will make a total of %d", retirement, (year + (retirement - age)), currency.format(masters * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had no Degree.", currency.format((masters * (retirement - age)) - (noDegree * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a High School degree.", currency.format((masters * (retirement - age)) - (highSchool * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a Bachelor's degree.", currency.format((masters * (retirement - age)) - (bachelor * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("With a Doctarites degree, you can earn %d more than if you just had a High School degree.", currency.format((masters * (retirement - age)) - (bachelor * (retirement - age)))); 
      System.out.print("\n"); 
     } 
     else if (degree == 5) 
     { 
      System.out.print("Based on current statistics and Doctarates degree:"); 
      System.out.print("\n"); 
      System.out.print("Your annual salary will be " +currency.format(doctorate)); 
      System.out.print("\n"); 
      System.out.format("Retiring at age %d in %d you will make a total of %d", retirement, (year + (retirement - age)), currency.format(doctorate * (retirement - age))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had no Degree.", currency.format((doctorate * (retirement - age)) - (noDegree * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a High School degree.", currency.format((doctorate * (retirement - age)) - (highSchool * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a Bachelor's degree.", currency.format((doctorate * (retirement - age)) - (bachelor * (retirement - age)))); 
      System.out.print("\n"); 
      System.out.format("That is %d more than if you had a Bachelor's degree.", currency.format((doctorate * (retirement - age)) - (masters * (retirement - age)))); 
      System.out.print("\n"); 
     } 
    } 
} 
+0

실제 출력은 무엇이며 예상 한 결과는 무엇입니까? – Ambrish

+0

@Ambrish 예상 출력을 추가했습니다. –

답변

0

currency.format()의 출력 형태는 String이다. % d을 % s (으)로 변경하십시오.

예 : 변경 : "고등학교 학위를 취득하면 학위가없는 경우보다 % d의 수입을 올릴 수 있습니다." this to : "고등학교 학위를 취득하면 학위가없는 것보다 % s 더 벌 수 있습니다."