Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加入“$&引用;对于右对齐的数字和未运行的扫描程序类,java_Java_Printf_Right Align - Fatal编程技术网

加入“$&引用;对于右对齐的数字和未运行的扫描程序类,java

加入“$&引用;对于右对齐的数字和未运行的扫描程序类,java,java,printf,right-align,Java,Printf,Right Align,我的代码有两个问题。 第一:我似乎无法在正确的位置添加“$”(我无法让它看起来像$10.00,只有$10.00$) 第二:添加Scanner类最终导致程序“运行”,但什么也没发生。(如果我使用一个数字设置gross,它运行正常,但不使用scanner类) 您可能想要打印出一个输入提示。关于货币格式,可以使用DecimalFormat类 import java.text.DecimalFormat; import java.util.Scanner; public class Payment {

我的代码有两个问题。
第一:我似乎无法在正确的位置添加“$”(我无法让它看起来像$10.00,只有$10.00$)
第二:添加Scanner类最终导致程序“运行”,但什么也没发生。(如果我使用一个数字设置gross,它运行正常,但不使用scanner类)


您可能想要打印出一个输入提示。关于货币格式,可以使用DecimalFormat类

import java.text.DecimalFormat;
import java.util.Scanner;
public class Payment
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter gross amount: ");
        double gross = keyboard.nextDouble();
        //double gross = 800; //will work
        double fed = (0.15 * gross);
        double state = (0.035 * gross);
        double soc = (0.0575 * gross);
        double med = (0.0275 * gross);
        double pen = (0.05 * gross);
        double hea = 75;
        double net = (gross - (fed + state + soc + med + pen + hea));
        DecimalFormat currency = new DecimalFormat("$0.00");
        System.out.println("Paycheck calculation by employee\n");
        System.out.printf("Gross Amount: %27s%n", currency.format(gross));
        System.out.printf("Federal Tax:%29s%n", currency.format(fed));
        System.out.printf("State Tax:%31s%n", currency.format(state));
        System.out.printf("Social Security Tax:%21s%n", currency.format(soc));
        System.out.printf("Medicare/Medicaid Tax:%19s%n", currency.format(med));
        System.out.printf("Pension Plan %28s%n", currency.format(pen));
        System.out.printf("Health Insurance %24s%n%n", currency.format(hea));
        System.out.printf("Net Pay:%33s", currency.format(net));
        keyboard.close();
    }
}

回答第一个问题,你可以这样回答:

System.out.printf("Gross Amount %28c%.2f%n", '$',  gross);
你的第二个问题,我认为你的问题是
语言环境
。根据您的
语言环境
,在本例中,
双精度
的输入格式可能不同。你可以做:

keyboard.useLocale(Locale.US);

这样,
Double
的输入将是整数部分,由一个
与小数部分分开
8000和
5.5
双重输入的有效示例。

关于您的第一个问题,您发布的代码根本不打印货币符号。发布不完全符合您要求的代码。关于您的第二行,问题很可能是您没有键入数字并按Enter键。为了便于将来参考,if最好将
双总
行之后的所有内容都省略,因为它们与问题无关。(你可以通过注释自己测试一下。)然后你可以提供
Scanner
实现,并向我们展示你的输入和输出,因为这是唯一一个有问题的。好吧,我想我通常添加了print语句,因此不知道Scanner类没有它就无法运行。DecimalFormat类也像一个符咒一样工作,但这是唯一的方法吗?我是否可以在printf语句中添加一行来执行此操作?
keyboard.useLocale(Locale.US);