简体   繁体   English

Currency Formatter不使用System.out.format

[英]Currency Formatter not working with System.out.format

I know that I am doing something wrong, I just don't know what. 我知道我做错了什么,我只是不知道是什么。 I need all the dollar values to be in US currency format. 我需要所有美元价值都采用美国货币格式。 As far as I can tell its a problem with using System.out.format with the currency formatter. 据我所知,使用System.out.format和货币格式化程序有问题。 I don't have much experience in java and there is probably a much better way to do this. 我在java方面没有太多经验,可能有更好的方法来做到这一点。

Output should look something like this. 输出应该看起来像这样。 在此输入图像描述

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");
        }
    }
}

The output type of currency.format() is a String . currency.format()的输出类型是String Change the %d to %s. 将%d更改为%s。

For example, Change this: "With a HighSchool degree, you can earn %d more than if you had no Degree." 例如,改变这一点:“拥有高中学历,你可以比没有学位时获得%d。” to this: "With a HighSchool degree, you can earn %s more than if you had no Degree." 对此:“拥有高中学历,你可以获得%s,而不是没有学位。”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM