2014-11-23 63 views
0

我想要做一個Java程序,讓我輸入10個單詞,然後單詞應該以相反的順序重複(最後第一個等)。Java,基本的數組錯誤

這是我當前的代碼:

import java.util.Scanner; 
import java.lang.String; 

public class Words { 

public static void main(String[] args){ 

String word[] = {}; 

for(int x = 0; x < 10; x+=1) { 

System.out.println("Input any word"); 

Scanner input = new Scanner(System.in); 
word = new String[] { input.next() }; 

     } 

for(int y = 9; y >= 0; y-=1) { 

System.out.println(word[y]); 

     } 
}} 

它讓我在編譯的時候出現以下錯誤:在線程

異常 「主要」 java.lang.ArrayIndexOutOfBoundsException:9的Words.main( Words.java:21)

我是新來的Java,並希望得到幫助,謝謝你的建議。

+0

'word'只得到1個字符串初始化(scanner.next())。然後循環並試圖從數組中打印最多9個值,其中8個值不存在。 'word'的長度是1,它只允許索引[0],但你正在訪問索引[1]到[8] – 2014-11-23 21:01:32

回答

1

這不是數組的工作方式。 更改String word[] = {};String word[] = new String[10];

此外,改變word = new String[] { input.next() };word[x] = input.next()

for循環之外移動Scanner input = new Scanner(System.in);也是一個好主意。您應該瞭解陣列如何工作以確保不會再發生。

+0

如果任務是以相反的順序打印出單詞,那麼閱讀Stacks可能也會有所幫助。 – Fildor 2014-11-23 21:12:33

+0

是的,但你需要走路才能跑步(要使用比喻) – 2014-11-23 21:19:03

0

你可以嘗試使用ArrayList要做到這一點,像這樣:

import java.util.*; 

public class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
     Scanner sc = new Scanner(System.in); 
     ArrayList al = new ArrayList(); 
     do{ 
      System.out.println("Enter word"); 
      String word = sc.nextLine(); 
      al.add(word); 
      if(al.size()==10){ 
       System.out.println("Words in reverse order");   
       for(int i = al.size()-1; i>= 0; i--){ 
        System.out.println(al.get(i)); 
       } 
      } 
     }while(al.size()<10); 
    } 
} 

我覺得這個正確回答你的問題。

所有最優秀的

肖恩