-1

我需要一些关于数组的帮助。我的问题是我创建了一个包含 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!");  
                    }
            }
        }
    }
}
4

2 回答 2

1

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

于 2012-07-24T21:01:51.003 回答
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 循环应该使用某种布尔值来查看您何时想要退出。

于 2012-07-24T22:22:51.803 回答