在数组 (Java) 中存储一个元素,直到我输入一些东西来阻止它

Storing an Element in Array (Java) until I type something to stop it

我正在用 Java 做这个项目,我正在尝试做一些计算并将它添加到一个数组中,这样当我输入“-1”时我可以输出这个数组中的所有元素但是即使我输入“-1”,它也会继续调用该函数 (我开始学习了Java)

public class main {
    
    public static double computeIncome(double SalesAmount) {
        double num = SalesAmount;
        double baseSalary = 5000;
        double numTotal = baseSalary;
        
        if(num < 5000.01) {
            numTotal += num * 0.08;
        }
        else {
            if(num < 10000.01) {
                numTotal += ((num - 5000) * 0.10);
                numTotal += baseSalary * 0.08;
            }
            else {
                numTotal += ((num - 10000) * 0.12);
                numTotal += baseSalary * 0.10;
                numTotal += baseSalary * 0.08;
                
            }
        }
        return numTotal;
    }
        
        
    
    static void cd(int DataCount, double[] DataBase) {
        int dataCount = 0;
        double[] db = DataBase;
        Scanner reader = new Scanner(System.in);
        
        double x = computeIncome(reader.nextDouble());
        
        
        if(x != -1) { 
            db[dataCount] = x;
            dataCount += 1;
            cd(dataCount, db);
        }
        else {
            for (int i = 0; i < db.length; i++) {  
                    System.out.println(db[i] + " ");  
               }  
        }
        reader.close();
    }
    
    public static void main(String[] args) {
        int dataCount = 0;
        double[] db = new double[20];
        System.out.println("Input the sales: (type '-1' to finish )");
        cd(dataCount, db);
            
    }
}

因此,当我输入 -1 时,即使我已经实现了一个 else 函数,它也会继续调用一个函数 我知道这应该是一个简单的代码,但我觉得这篇文章让我的生活变得非常艰难

我已经稍微更改了您的代码 - 根据 Java 标准修复了一些逻辑并重命名了参数。我相信现在它可以达到您的预期:

    public class main {

    public static double computeIncome(double salesAmount) {
        double num = salesAmount;
        double baseSalary = 5000;
        double numTotal = baseSalary;

        if(num < 5000.01) {
            numTotal += num * 0.08;
        }
        else {
            if(num < 10000.01) {
                numTotal += ((num - 5000) * 0.10);
                numTotal += baseSalary * 0.08;
            }
            else {
                numTotal += ((num - 10000) * 0.12);
                numTotal += baseSalary * 0.10;
                numTotal += baseSalary * 0.08;

            }
        }
        return numTotal;
    }

    static void cd(int dataCount, double[] dataBase) {
        int currentDataCount = dataCount;
        double[] db = dataBase;
        Scanner reader = new Scanner(System.in);

        double valueFromInput = reader.nextDouble();
        if (valueFromInput == -1) {
            for (int i = 0; i < db.length; i++) {
                System.out.println(db[i] + " ");
            }
        }

        double x = computeIncome(valueFromInput);
        db[currentDataCount] = x;
        currentDataCount += 1;
        cd(currentDataCount, db);

        reader.close();
    }

    public static void main(String[] args) {
        int dataCount = 0;
        double[] db = new double[20];
        System.out.println("Input the sales: (type '-1' to finish )");
        cd(dataCount, db);
    }
}

*class 也应重命名为 Main(Java class 名称应以大写字母开头)。如果您愿意,我可以展示如何进一步改进此代码