似乎无法访问我的数组值,即使它正常工作

时间:2016-10-26 23:08:02

标签: java arrays

出于某种原因,我似乎无法访问我创建的for循环之外的数组值。我在本地声明了这个数组。但是当我必须输入一个值时,由于某种原因,入口值会不断给我0。有没有办法从for循环中的数组中获取信息,以便“泛化”,这样就可以在其他函数中使用。

import java.util.*;

public class Array {

      public static void main(String[] args) throws IndexOutOfBoundsException {

        int[] array = new int[100];
        try{
        for(int i: array){
            array[i] = (int)(Math.random()*100);
            System.out.println(array[i]);
            }
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter an index for which you would like to see: ");
            int index = input.nextInt();
            System.out.println(array[index]);

        }catch(IndexOutOfBoundsException ex){
            System.out.println("Please enter in an index thta is not out of bounds");
        }finally{System.out.println("--------------------------");}
    }
}

3 个答案:

答案 0 :(得分:2)

尝试使用此for循环,它应该工作:

for(int i=0;i<array.length;i++){
            array[i] = (int)(Math.random()*100);
            System.out.println(array[i]);
        }

代码中的问题是:

当你执行for(int i: array)时,你只是指示只将数组的内容从数组[0]复制到数组[99]到i,由于没有设置其他值,所以它始终为零。 。 增强的for循环应该用于更少的代码迭代

要了解增强循环的工作原理,请尝试以下给出的循环以便您理解:

int[] array = new int[100];
        array[0]=1;array[1]=2;

        for(int i: array){
           // array[i] = (int)(Math.random()*100);
            System.out.println(i);
        }

运行此代码时,第一个和第二个元素将打印1和2.

希望现在明白。

答案 1 :(得分:0)

那是因为你正在使用增强型for-loop你没有初始化数组的每个元素,获取值的唯一元素是第一个元素零。声明数组时,所有值都设置为零。因此,在增强型for-loop中,您设置了array[0]的值,这就是您将输出作为零的原因。

将增强型for-loop替换为:

       int[] array = new int[100];
        try{
        for(int i=0;i<array.length;i++){
            array[i] = (int)(Math.random()*100);

            System.out.println(array[i]);
            }
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter an index for which you would like to see: ");
            int index = input.nextInt();
            System.out.println(array[index]);

        }catch(IndexOutOfBoundsException ex){
            System.out.println("Please enter in an index thta is not out of bounds");
        }finally{
            System.out.println("--------------------------");
        }

答案 2 :(得分:0)

声明数组时,为其提供100个索引。它们自动成为全0。你的每个循环只是为你的数组中的第0个索引分配一个随机数,其他一切都保持为0.你实际上并没有访问数组中的第i个元素!

这应修复您的代码:

public static void main(String[] args) {
     int[] array = new int[100];
        try{
        for(int i=0; i<array.length; i++){
            array[i] = (int)(Math.random()*100);
            System.out.println(array[i]);
            }

            Scanner input = new Scanner(System.in);
            System.out.println("Please enter an index for which you would like to see: ");
            int index = input.nextInt();
            System.out.println(array[index]);

        }catch(IndexOutOfBoundsException ex){
            System.out.println("Please enter in an index thta is not out of bounds");
        }finally{System.out.println("--------------------------");}

        }
}