首页 > 解决方案 > 嵌套的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!");    
    }
}

标签: javafor-loopnested-loops

解决方案


所以这里的错误是你没有在内部循环中更新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);
            
            }
        }   
}

所以这部分应该可以正常工作。


推荐阅读