2015-03-31 382 views
0

我是一名具有創建程序的開始程序員,該程序提示用戶輸入將存儲到字符串數組中的元素數量。作業的第二部分是以升序列出數組。但我有點卡住了第一部分。如果用戶輸入,在輸入第三個字符串後會有3個元素,我得到一個超出界限的異常。以下是代碼。將字符串輸入到數組中

import java.util.*; 
public class arrays 
{ 
    public static void main(String[]arg) 
    { 
     Scanner input = new Scanner(System.in); 
     //Read user input.     
     System.out.print("How many Elements? ");     
     int num = input.nextInt(); 
     String array[]= new String[num];     

     for (int i = 1 ; i <= num; i++)    
     {      
      System.out.print("Enter element "+ i +": "); 
      array[i] = input.next(); 
     } 
     System.out.println(array); 
    } 
} 
+0

你正在使用的語言應該是*標記*,而不是在標題。 – crashmstr 2015-03-31 17:09:04

+0

數組從0開始,所以你的第三個元素應該是數組[2],其中你的第一個元素是[0]。所以你的int我應該從0開始 – 2015-03-31 17:09:58

+0

在索引0開始數組有助於解決fence問題http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html – 2015-03-31 17:11:22

回答

2

數組索引0啓動,這樣你的循環應該是這樣的:

for (int i = 0 ; i < num; i++)    
{      
    System.out.print("Enter element "+ (i+1) +": "); 
    array[i] = input.next(); 
} 

注意,我也是在System.out.print添加+1顯示「用戶友好」輸出(例如「輸入元素1 :「而不是」輸入元素0:「爲第一個元素)。

另一種辦法是減去1同時訪問陣列,這將讓你保持現有的System.out.print行:

for (int i = 1 ; i <= num; i++)    
{      
    System.out.print("Enter element "+ i +": "); 
    array[i - 1] = input.next(); 
} 

雖然我覺得這是不太常用的做法。

0

數組在Java中的編號從零,這意味着,你的長度爲3的數組有這樣的有效索引:

array[0] 
array[1] 
array[2] 

我想這是足以讓你在正確的軌道上;-)

-1

更改爲array[i-1] = input.next();

0

從i = 0開始並上升到i < num,因爲在三個數組的示例中,您的數組從0開始並上升到2,因此難怪存在超出範圍的異常。這應該可以解決這個錯誤。

0

您會收到錯誤消息,因爲array索引以0開頭。你應該改變你的循環成這樣:

for (int i = 0 ; i < num; i++)