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:0在app.App.main(App.java:46)
我该如何解决这个问题?
答案 0 :(得分: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中的 try-with-resources :
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);
}
}
答案 1 :(得分: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);
答案 2 :(得分:0)
您已将数组初始化为0(这就是我的开头)。因此,当您开始循环时,x [i]不存在。
我建议使用此问题中详述的ArrayList:How to add new elements to an array?
x[i]!="stop"
当用户输入stop时,也不会评估为true,因为它正在比较对象引用,而不是字符串的内容。
请参阅有关Java中字符串比较的文章:http://docs.oracle.com/javase/tutorial/i18n/text/collationintro.html