我正在嘗試撰寫一個程式,該程式計算 4 年內不同百分比的年度工資增長。但是,外回圈不會按要求增加工資或重復使用它來計算 4 年后的加薪。程式輸出也沒有按要求四舍五入到小數點后兩位。我可能做錯了什么?
import java.util.Scanner;
public class AnnualRaise {
public static void main(String[] args) {
//create a scanner for user input
Scanner input = new Scanner(System.in);
System.out.print("Enter a salary: ");
double salary = input.nextInt();
double raise;
int MAX_YEAR = 4;
int MAX_RAISE = 5;
if(salary != 0) {
for(int raiseRate = 3; raiseRate <= MAX_RAISE; raiseRate ) {
System.out.println("Raise rate: " raiseRate "%");
raise = Math.round((salary * (raiseRate * 0.01)) * 100 / 100);
salary = raise;
for(int year = 1; year <= MAX_YEAR; year ) {
System.out.println(" Year: " year ", Raise: $" raise ", Salary: $" salary);
}
}
}
else
System.out.println("Good bye!");
}
}
uj5u.com熱心網友回復:
你好!希望你過得愉快!
所以這里的錯誤是你沒有更新內回圈中salary&的值raise。所以它列印出完全相同的值。
double n = salary;
if(salary != 0) {
for(int raiseRate = 3; raiseRate <= MAX_RAISE; raiseRate ) {
salary = n;
System.out.println("Raise rate: " raiseRate "%");
for(int year = 1; year <= MAX_YEAR; year ) {
raise = Math.round((salary * (raiseRate * 0.01)) * 100 / 100);
salary = raise;
System.out.println(" Year: " year ", Raise: $" raise ", Salary: $" salary);
}
}
}
所以這部分應該可以正常作業。
uj5u.com熱心網友回復:
我認為你的邏輯是錯誤的。我假設如下。
- 第一年加薪3%
- 第二年加薪4%
- 在第三年(及以后),加薪是 5%(因為那是
MAX_RAISE)。
您不會在內回圈中更改薪水。事實上,你不應該有一個嵌套回圈。(見下面的代碼。)
Scanner input = new Scanner(System.in);
System.out.print("Enter a salary: ");
double salary = input.nextInt();
if (salary != 0) {
double raise;
int MAX_YEAR = 4;
int MAX_RAISE = 5;
int raiseRate = 3;
for (int year = 1; year <= MAX_YEAR; year ) {
System.out.println("Raise rate: " raiseRate "%");
raise = Math.round((salary * (raiseRate * 0.01)));
salary = raise;
System.out.printf(" Year: %d, Raise: $%.2f, Salary: $%.2f%n", year, raise, salary);
if (raiseRate < MAX_RAISE) {
raiseRate ;
}
}
}
else
System.out.println("Good bye!");
乘以 100 再除以 100 不影響計算,因此計算加薪的公式很簡單
salary * (raiseRate * 0.01)
此外,為了格式化輸出,您可以使用方法printf。
這是上述代碼的示例運行的輸出。
Enter a salary: 1000
Raise rate: 3%
Year: 1, Raise: $30.00, Salary: $1030.00
Raise rate: 4%
Year: 2, Raise: $41.00, Salary: $1071.00
Raise rate: 5%
Year: 3, Raise: $54.00, Salary: $1125.00
Raise rate: 5%
Year: 4, Raise: $56.00, Salary: $1181.00
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351338.html
