使用异常通过其他数组划分数组

时间:2016-12-10 22:26:54

标签: java arrays exception

我是一个写入程序,从另一个数组中分割出一个数组,这个程序也覆盖了程序中可能发生的问题的异常。程序中的问题是输出不按顺序。我需要打印出这样的结果:

before division start-
program is proessing 2-
division by zero-
program is proessing 10-
program is proessing 15-
.....

如果您编译代码,您会看到答案已经搞砸了。



public class exception {
public static void main (String args[]){
	//int[]pooya =new int[10];
	int[] pooya={20,4,80,75,48,30};
	int[]java={10,0,8,5,12,3,78,2,12};
	System.out.println("beofore division start");
	for(int i=0;i<=pooya.length;i++){
		 for(int x=0;x<=java.length;x++){
	try{
		int y=pooya[i]/java[x];
		System.out.println("program is prossing "+y);
		}
	catch(ArithmeticException poo){
		System.out.println("division by zero");
	}
	catch(ArrayIndexOutOfBoundsException po){
		System.out.println("item is not match");
	}
    }
    }
}
}
&#13;
&#13;
&#13;

`

1 个答案:

答案 0 :(得分:0)

现在你的程序逻辑没有遵循预期结果中的逻辑。 您正在使用嵌套的for-cycle,其行为如下:

  1. 为i循环的第一个循环被设置为0,例如它得到&#34; 20&#34;如 它是 pooya 数组中的零元素。第二个周期试图 将20除以数组 java 中的所有元素,例如第一 20/10,然后是20/0,然后是20/8,依此类推,直到 java 结束 阵列。
  2. 完成所有这些操作后程序将返回 从 pooya 数组切换到下一个值并进行分割 此元素来自 java 数组的所有元素。
  3. 另一件事是,在你的for循环中,你超出了数组的大小,导致你的 ArrayIndexOutOfBoundsException 异常。

        int[] pooya = {20, 4, 80, 75, 48, 30} 
    

    此数组的长度为6,但索引从0开始,表示您有有效元素 pooya [0],pooya [1],pooya [2],pooya [3],pooya [4 ]和 pooya [5] - 六个要素。调用pooya [6]会导致 ArrayIndexOutOfBoundsException 异常。这就是为什么你应该从你的for循环定义中删除你的等号,因为我永远不应该达到6:

        for (int i = 0; i < pooya.length; i++)
    

    如果您想获得数组描述的结果

        int[] pooya = {20, 4, 80, 75, 48, 30};
        int[] java = {10, 0, 8, 5, 12, 3, 78, 2, 12}; 
    

    然后你应该重构你的代码只使用一个周期,如下所示:

            int[] pooya = {20, 4, 80, 75, 48, 30};
            int[] java = {10, 0, 8, 5, 12, 3, 78, 2, 12};
            System.out.println("Before division start");
            for (int i = 0; i < pooya.length; i++) {
                try {
                    int y = pooya[i] / java[i];
                    System.out.println("Program is processing " + y);
                } catch (ArithmeticException poo) {
                    System.out.println("Division by zero");
                } catch (ArrayIndexOutOfBoundsException po) {
                    System.out.println("Item is not match");
                }
            }
    

    使用此实现,您将获得20 / 10,4 / 0,80 / 8,75 / 5,48 / 12和30/3的结果,然后它将无法继续,因为第一个元素中没有更多元素要用于除法的数组,您不需要用于 ArrayIndexOutOfBoundsException 的catch。