2017-08-31 56 views
-4

我必须在Java中创建一个代码,用于显示薪水从1美分开始并且每天加倍10天的作业。我唯一的问题是,我很难将工资转换为十进制格式,而我的输出是以美元而不是美分出来的。我对编码非常陌生,可以使用我可以获得的任何帮助。我的错误是“工资”已经定义在主体中,但是当我将十进制格式代码移到主体上方时,问题仍然存在。我如何将小数点移动到两个地方?我的输出被张贴在代码下,所以你们可以看到我的问题。谢谢!!将双精度转换为十进制格式?

import java.util.Scanner; 
import java.text.DecimalFormat; 

public class hw2 { 
public static void main(String[] args) { 
Scanner in = new Scanner(System.in); 
//Find number of days worked 
int days; 
System.out.println("How many days did you work under the current 
salary?"); 
days = in.nextInt(); 
int num = 1; 
while (num <= days) 
{ 
    double salary = Math.pow(2, (num-1)); 
    DecimalFormat salary = new DecimalFormat("##.00"); 
    System.out.println("Your salary for day " + num + " is $" + 
    salary); 
     num++; 
     } 
    } 
} 

输出:

多少天你目前的工资下工作吗?

你的1天的薪水是$ 1.0

你的第2天的工资$ 2.0

您的3天薪水是$ 4.0

您的4天工资$ 8.0

第5天的薪水是$ 16.0

您的6天薪水是$ 32.0

你的7天的工资$ 64.0

您的8天工资$ 128.0

您的9天薪水为$ 256.0

您的10天薪水是$ 512.0

+1

名称'DecimalFormat'变量别的东西。 ---乘以100将小数点移动2位。 – Andreas

+0

[读取/将InputStream转换为字符串]的可能副本(https://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string) – Melchia

+0

您是否阅读过您编写的代码?你显然不能同时在同一个范围内找到“双倍工资”和“DecimalPoint工资”。这就像乔治福尔曼和5个儿子命名为乔治 - 他们怎么知道福尔曼太太在喊她叫什么?乔治!让你的屁股在这里!*?除了这种情况,“双薪”就会消失,并被“DeclmalPoint工资”取代。 –

回答

0

您有两个同名的变量,并且您没有使用DecimalFormat来设置工资格式。你有两个选择达到你想要的东西:

选项#1

使用DecimalFormat来格式化double

double salary = Math.pow(2, (num-1)); 
DecimalFormat round = new DecimalFormat("##.00"); 
System.out.println("Your salary for day " + num + " is $" + 
round.format(salary)); 

请注意,您需要使用.format()

选项#2

使用printf()到您的输出格式为以下几点:

double salary = Math.pow(2, (num-1)); 
System.out.printf("Your salary for day %d is $%.2f%n", num, salary); 

或者使用String.format()将做同样的事情:

double salary = Math.pow(2, (num-1)); 
System.out.println(String.format("Your salary for day %d is $%.2f", num, salary)); 
0

您的问题正在发生,因为你已经使用的变量名“工资”来指的是包含实际工资的变量。每个变量名称只能在同一个范围内使用一次。这就是你收到错误的原因。

但是,您还需要正确使用十进制格式才能根据需要显示结果。请参阅Double decimal formatting in Java以了解如何做到这一点。

与更换,而块以下应给予正确的解决方案:

while (num <= days){ 
    double salary = Math.pow(2, (num-1)); 
    DecimalFormat salaryFormat = new DecimalFormat("##.00"); 
    System.out.println("Your salary for day " + num + " is $" + salaryFormat.format(salary)); 
    num++; 
} 
相关问题