我的目标是制作一个String数组,并将其发送给其他方法,它必须是一个string数组。由于我不知道将要输入多少个字符串,所以我无法预测将要使用多少个字符串,因此我正在使用arrayList。但是,当我尝试将arrayList转换为简单数组时,在编译器中出现了无法访问的语句错误。
我在这里遇到错误:
String[] gradic = new String[lista.size()];
这是我其余的代码:
public static main(){
Scanner in = new Scanner(System.in);
System.out.println("Enter strings (empty line to end):");
List<String> list = new ArrayList<String>();
while (true){
String x = in.nextLine();
if (x.equals(" ")) continue;
lista.add(x);
}
String[] x0 = new String[list.size()];
lista.toArray(x0);
}
我希望arrayList变成一个String []数组。
答案 0 :(得分:1)
此循环没有任何break
,因此程序无法退出该循环:
while (true){
String x = in.nextLine();
if (x.equals(" ")) continue;
lista.add(x);
}
可能您想写:
while (true){
String x = in.nextLine();
if (x.equals(" ")) break;
lista.add(x);
}
答案 1 :(得分:1)
如果您刚开始使用Java编程,请不要使用while(true)
,即使有适当的休息也不要使用。如果您想在用户输入特定内容时停止阅读输入内容,请对此进行测试:
Scanner in = new Scanner(System.in);
System.out.println("Enter strings (empty line to end):");
List<String> list = new ArrayList<String>();
String input = "";
while (!input.equals(" ")) { // If this is your break condition: test for it.
input = in.nextLine();
if (!input.equals(" ")) {
list.add(input);
}
}
是否对input
进行了两次检查?是。是“效率低下”吗?在这种类型的代码中,您不需要关心甚至可以有意义地进行评论。对于人类读者来说,该代码应该应该做什么?非常非常重要,这就是您将要编写一段时间的代码的要点。
答案 2 :(得分:0)
在循环后没有while(true)
的情况下,您不能使break;
的代码为 通常,如果条件评估为 true while([condition]) >在编译时(例如使用常量),如果while后面有代码,则while循环必须具有某种break语句。如果过一会儿没有代码,那就没问题了。