2014-10-21 92 views
0
int i=0; 
String x[]= new String[i]; 
while(true){ 
    if(x[i]!="stop") { 
     x[i]=in.nextLine(); 
     i++; 
     return; 
    } 
} 

我想讓用戶輸入文本點擊輸入,輸入一些其他文本,然後按回車等,直到用戶鍵入「停止」。然後我希望數組x[i]將所有不同的輸入存儲爲其元素。如何將字符串輸入數組,直到輸入字符串符合條件?

的NetBeans繼續發送線程 「main」 java.lang.ArrayIndexOutOfBoundsException

例外:在app.App.main 0(App.java:46)

我怎樣才能解決這個問題?

+2

在Java中你不能使用'=='和'!='運算符來比較字符串,所以你需要使用equals(...) '方法。 – Titus 2014-10-21 21:20:52

+1

錯誤正是它所說的:當你創建'x'時,'i'持有'0'。如果你想動態調整你的數組的大小,可以使用'ArrayList',或者在這種情況下可能是'LinkedList'。 – Floegipoky 2014-10-21 21:28:16

回答

1

我甚至不能開始糾正你的碼。爲了實現你想做的事情,試試這個:

Scanner in = new Scanner(System.in); 
    ArrayList<String> list = new ArrayList<String>(); 
    String line; 
    while (!(line = in.nextLine()).equals("stop")) { 
     list.add(line); 
    } 
    in.close(); 
    System.out.println(list); 
1

你有ArrayIndexOutOfBoundsException,因爲這行:

String x[]= new String [i]; // here i = 0 

因爲你不知道輸入的大小,直到運行時,你需要一個數據結構在尺寸上更加靈活。


使用ArrayList<String>,而不是該數組:

public static void main(String[] args) { 

    ArrayList<String> x = new ArrayList<String>(); 

    String line = ""; 
    Scanner in = new Scanner(System.in); 

    while(true){ 
     line = in.nextLine(); 
     if ("stop".equals(line)) { 
      break; 
     } 
     x.add(line); 
    } 
    in.close(); 

    System.out.println(x); // print the result 
} 

或使用試穿與資源從Java 7:

ArrayList<String> x = new ArrayList<String>(); 

    try(Scanner in = new Scanner(System.in)) { 
     String line = ""; 
     while(true){ 
      line = in.nextLine(); 
      if ("stop".equals(line)) { 
       break; 
      } 
      x.add(line); 
     } 
    }