2017-08-31 55 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++; 
} 
相關問題