Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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_Netbeans_Formula_Decimalformat - Fatal编程技术网

Java 将双精度转换为十进制格式?

Java 将双精度转换为十进制格式?,java,netbeans,formula,decimalformat,Java,Netbeans,Formula,Decimalformat,我必须用Java为家庭作业创建一个代码,显示工资从1美分开始,每天翻倍10天。我唯一的问题是,我很难将工资转换成十进制格式,我的输出是美元,而不是美分。我对编码非常陌生,可以利用我能得到的任何帮助。我的错误是“salary”已在main中定义,但当我将十进制格式代码移到main上方时,问题仍然存在。如何将小数点移动到两位以上?我的输出在代码下发布,所以你们可以看到我的问题。谢谢 import java.util.Scanner; import java.text.DecimalFormat;

我必须用Java为家庭作业创建一个代码,显示工资从1美分开始,每天翻倍10天。我唯一的问题是,我很难将工资转换成十进制格式,我的输出是美元,而不是美分。我对编码非常陌生,可以利用我能得到的任何帮助。我的错误是“salary”已在main中定义,但当我将十进制格式代码移到main上方时,问题仍然存在。如何将小数点移动到两位以上?我的输出在代码下发布,所以你们可以看到我的问题。谢谢

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++;
        }
   }
}
import java.util.Scanner;
导入java.text.DecimalFormat;
公共级hw2{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
//查找工作天数
国际日;
你在当前工作环境下工作了多少天
薪金?);
天数=in.nextInt();
int num=1;

while(num您有两个同名的变量,并且您没有使用
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));

出现问题的原因是您已使用变量名“salary”来引用包含实际薪资的变量。每个变量名在同一范围内只能使用一次。这就是您收到错误的原因

但是,您还需要正确使用十进制格式,以便根据需要显示结果。请参阅以了解如何执行此操作

用以下内容替换while块应给出正确的解决方案:

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++;
}

while(num将
DecimalFormat
变量命名为其他变量。--乘以100将小数点移动2位。可能的重复项你读过你写的代码吗?显然,你不能在同一范围内同时拥有
双倍工资
DecimalPoint工资
。这就像乔治·福尔曼和5个名为Geo的儿子一样rge-当Foreman太太大喊George!滚开!他们怎么知道她在生哪一个的气?除了这种情况,
双薪
就消失了,取而代之的是
降薪