java - 嵌套的java循环没有产生预期的结果
问题描述
我正在尝试编写一个程序来计算 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!");
}
}
解决方案
所以这里的错误是你没有在内部循环中更新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);
}
}
}
所以这部分应该可以正常工作。
推荐阅读
- javascript - 使用 javascript 和 php while 循环
- python - 将 IP 地址从 long int 格式转换为字符串
- c - 带有拆分定义的 Cython 编译
- javascript - 如何在表单中放置警报
- android - 更改我所有已发布应用的签名密钥。可能吗?
- jquery - 自定义 Bootstrap 4 工具提示宽度、颜色和箭头的正确方法?
- swift - Xcode swift - 复制捆绑后 AVAudio 播放器不工作
- php - Redis 中的 FLUSHALL ASYNC 线程是否安全?
- android - android phone linux deploy docker systemctl 在 chroot 中运行,忽略请求。问题
- php - 如何删除数组前后的“”