我希望我的数组值在java中捕获异常

时间:2012-07-24 20:56:03

标签: java arrays

我需要一些关于数组的帮助。我的问题是我创建了一个包含100个元素的整数数组。如果用户输入的值大于100,则java会抛出异常。我希望允许用户在数组中输入100以上,并向用户抛出ArrayOutOfBoundsException。我在这里有代码:

编辑我忘了问我是否有一个子数组正确的数组。顺便说一下,我希望在普通数组中完成,而不是在ArrayList中完成。

public class Lab6
{
    public static void main(String[] args)throws IOException, NullPointerException, ArrayIndexOutOfBoundsException
    {       
        //the memory with 100 elements
        int[] vMem = new int[100];
        //the memory with 1000 elements
        int[][] vTopMem = new int[1000][];
        vTopMem[0] = vMem; 
        System.out.println("Enter an integer: ");
        File vMemory = new File("file name and location");
        RandomAccessFile storeMem = new RandomAccessFile(vMemory, "rw");
        Scanner input = new Scanner(System.in);
        while(true)
        {
                for(int i = 0; i < vMem.length; i++)
            {
                    vMem[i] = input.nextInt();
                    storeMem.write(i);
                    if(i > vMem.length)
                    {
                     System.out.println("out of bounds!");  
                    }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您正在寻找超出Java原始数组的数据结构,您可能会喜欢ArrayList类。它允许您存储数据而不用担心ArrayOutOfBoundsException。每当我需要一个可变大小的数组时,我就会使用它。

答案 1 :(得分:0)

if(i>vMem.length)
{
    throw new ArrayIndexOutOfBoundsException();
}

这是你要找的吗?

编辑:

for(int i = 0; i < vMem.length; i++)
{
     vMem[i] = input.nextInt();
     storeMem.write(i);
     if(i > vMem.length)
     {
          System.out.println("out of bounds!");  
     }
 }

'i'永远不会大于vMem.length,因为你的for循环'i'总是比vMem.length少。如果您正在检查nextInt以查看您尝试将数据放入哪个索引,那么您的代码应该更像这样:

while(true)
{
     int i = input.nextInt();
     if(i > vMem.length)
        throw new ArrayindexOutofBoundsException();

     vMem[i] = data;
}

只要您提供有效的输入,这也将永远运行,因此您的while循环应该使用某种布尔值来查看何时退出。