我需要一些关于数组的帮助。我的问题是我创建了一个包含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!");
}
}
}
}
}
答案 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循环应该使用某种布尔值来查看何时退出。