首页 > 解决方案 > 如何修复我的子类循环,使其在主循环中仅循环一次?

问题描述

在运行程序时(在NetBeans 8.2 中构建和运行)它只会运行一次子类循环,当它应该运行3 次时,每个用户输入的变量值一次。

我试图调整 m[0].length 将其替换为:m.length、>4、>3、=>3、=>4,按照 NetBeans 的建议转换了 for 循环:for (double[] m1 : m )。

public class ConversionRate {

    public static void main(String[] args) {

        //scanner for user input for variables
        Scanner input = new Scanner(System.in);

        //declare variables to be used
        String currency;
        double [][] m = new double[3][3];

        //user input for starting rate to be converted
        System.out.print("Enter USD or EURO as the starting currency to be " +
                "converted: ");        
        currency = input.nextLine();

        System.out.println("Enter " + m.length + " values to be converted, " + 
                "adding a space between each value: ");

        for (int i = 0; i < m.length; i++){
            for (int j = 0; j == 0; j++){
                m[i][j] = input.nextDouble();
            }
        }
        if (currency.equalsIgnoreCase("USD")){
        for (int k = 0; k < m.length; k++){
            System.out.println("Converted Value        " + 
                "  Conversion Rate");
            System.out.println("=========================================");
            System.out.println("  " + convertedUs(m,k) +
                    "                      " + conversionRateUs(m,k));
        }
        }
        else if (currency.equalsIgnoreCase("Euro")){
        for (int k = 0; k < m.length; k++){
            System.out.println("Starting Value      Converted Value      " + 
                "  Conversion Rate");
            System.out.println("=========================================" + 
                "==================");
            System.out.println("                         " + convertedEuro(m,k) +
                    "                      " + conversionRateEuro(m,k));
                }
        } else {
            System.out.println("Invalid selection, please try again.");
        }
    } 
public static double conversionRateUs (double [][] m, int columnIndex){

        double conversionRateUs = 0.02; 
        double value2 = 0.00;

        for (int i = 0; i < m[0].length; i++){
            value2 = m[i][columnIndex] * (0.02 * 100) / 100;
        }      
            return value2;

}
public static double conversionRateEuro (double [][] m, int columnIndex){

        double conversionRateEuro = 0.08; 
        double value2 = 0.00;

        for (int i = 0; i < m[0].length; i++){
            value2 = m[i][columnIndex] * (0.08 * 100) / 100;
        }      
            return value2;
}

预期结果会计算总换算率和换算“税”率对用户输入的每个值进行收费,目前只显示第一个值。

标签: javaarraysloops

解决方案


我确实发现了我的问题,当我只需要使用一维数组时,我试图使用多维数组。现在处理信息格式,但我得到的计算和输出最终可以正常工作:

https://gist.github.com/sometowngeek/0eaf0dcec5e7318f24f66347ef3748b1


推荐阅读