2012-07-24 38 views
-1

我需要一些數組幫助。我的問題是我創建了一個有100個元素的整數數組。如果用戶輸入的值大於100,那麼java拋出異常。我希望允許用戶在數組中輸入100以上,並且拋出ArrayOutOfBoundsException。我有這裏的代碼:我想我的數組值在java中捕獲異常

編輯我忘了問,如果我有一個子陣列正確的數組。順便說一句,我想這在普通數組不是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!"); 
        } 
      } 
     } 
    } 
} 
+6

在整篇文章中沒有一個問號。也是黨。毆打我的作業retag。 – Wug 2012-07-24 20:58:15

+0

我真的不明白你想要什麼,請更具體一些。如果你想要一個用戶可以嘗試添加一個101值,只需在你的循環中捕獲ArrayIndexOutOfBoundsException,而不是拋出它並顯示錯誤。 – Duffydake 2012-07-24 21:03:26

+0

我沒有看到vTopMem的要求是相當誠實的,除了將一個二維數組引用賦值給vMem之外,您從來不會對它做任何事情。 – ardent 2012-07-24 22:24:36

回答

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!"); 
    } 
} 

'我' 決不會比vMem.length更大作爲你的循環有 'i' 鍵總是比vMem.length更少。如果nextInt是你檢查什麼,看你想放入數據,你的代碼應該看起來更像是這裏面指數:

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

    vMem[i] = data; 
} 

只要你給有效輸入,這也將永遠運行,所以你的while循環應該使用某種布爾值來查看你想要退出的時間。

+0

我試過這樣做,但程序仍在運行。我的陣列可能有問題嗎?我應該使用2D數組嗎? – cyberspace009 2012-07-24 23:30:53

+0

@ cyberspace009,問題是,爲什麼你想要一個二維數組?而你的程序將永遠運行,因爲你的while循環總是如此。另外,我正在編輯我的答案,告訴你爲什麼你的例外從未拋出。 – ardent 2012-07-25 00:04:39

+0

以及我需要做一個數組,其他數組的值。我被告知:爲了讓數組有一個子數組,你需要使用2d數組。代碼的起始行應該代表那個。一個陣列有100個元素,另一個陣列有1000個元素。 – cyberspace009 2012-07-25 00:11:42

1

如果您正在尋找超出Java原始數組的數據結構,您可能會喜歡ArrayList類。它允許你存儲數據,而不用擔心ArrayOutOfBoundsException。我使用它,每當我需要一個數組,這將是可變大小:

+1

它應該是一個評論... – alfasin 2012-07-24 21:06:22

+0

@LuiggiMendoza我寫了評論後,答案被改變了。 – alfasin 2012-07-24 21:32:33

+0

既不是這一個:P – alfasin 2012-07-24 21:34:45