2014-10-21 88 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); 
     } 
    }