如何获取以下代码以便调试而不会出错?

时间:2013-11-08 14:46:10

标签: java arrays multidimensional-array switch-statement

我编写的这段代码出现了我不明白如何修复的错误。这就是我想要它做的事情: 创建3个案例,允许用户在案例1或2之间进行选择(任何其他情况都会导致默认情况)

案例1:从用户那里获取输入(在这种情况下,一个名为zmultiplier的双输入),取两倍,乘以数组z中的每个元素,并显示结果数组(命名结果)。

案例2:我希望程序遍历每个数组元素,并打印每个可被2或5整除的数组元素。

默认值:打印“数组z未更改”

这是我写的:

package jm;

import java.util.Scanner;

public class Jm {

    public static void main(String[] args) {

Scanner input = new Scanner (System.in);

    int [][] z = {{8,15,22,28,36,40},{43,45,48,59,66,70}};  
    int Case;
    double zmultiplier;
    int arrayelement;
    int row=0;
    int column=0;

    System.out.println("Enter case: ");

    Case = input.nextInt(); 
    switch(Case)
    {
     case 1: 
            System.out.println("Enter number to multiply array z by: ");
    zmultiplier = input.nextDouble(); 
    double [][] result = new double [row][column];
    for (;row < z.length; row++ )
    { for (;column < z[row].length; column++ )
     result[row][column] = result[row][column] * zmultiplier;
        System.out.printf( "%d ", result[row][column]);
    }

            break;

        case 2:
           for ( int row = 0; row < array.length; row++);
            {
            for (int column = 0; column < array[row].length; column++);

                if (arrayelement%2 == 0) || (arrayelement%5 == 0);
                System.out.println(arrayelement); 
                     break;

                default: 
                     System.out.println("array z is not changed");
            break;
    }
}
}

如果有人能为我解决这个问题并详细解释(和Layman的条款)我做错了什么,我会非常感激。

1 个答案:

答案 0 :(得分:4)

对于 start ,这两个看起来都错了:

for (int column = 0; column < array[row].length; column++);

if (arrayelement%2 == 0) || (arrayelement%5 == 0);

在这里,您使用;作为if语句和for循环的整个主体。它相当于:

for (int column = 0; column < array[row].length; column++) {
}

if (arrayelement%2 == 0) || (arrayelement%5 == 0) {
}

我怀疑那不是你的意思。我强烈建议你总是使用大括号for循环和if语句,即使你在这些大括号中只有一个语句 - 这有助于保持清晰。