为什么编译器给我一个无法访问的语句?

我的目标是制作一个字符串数组,我将将其发送到其他方法,它必须是一个字符串数组。由于我不知道要输入多少个字符串,我无法预测将使用多少个字符串,我正在使用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[] 数组。


GCT1015
浏览 93回答 3
3回答

慕标5832272

这个循环没有任何 ,所以程序不能退出它:breakwhile (true){&nbsp; &nbsp; String x = in.nextLine();&nbsp; &nbsp; if (x.equals(" ")) continue;&nbsp; &nbsp; lista.add(x);}可能你是想写的:while (true){&nbsp; &nbsp; String x = in.nextLine();&nbsp; &nbsp; if (x.equals(" ")) break;&nbsp; &nbsp; lista.add(x);}

翻阅古今

如果您刚刚开始使用 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.&nbsp; &nbsp; input = in.nextLine();&nbsp; &nbsp; if (!input.equals(" ")) {&nbsp; &nbsp; &nbsp; list.add(input);&nbsp; &nbsp; }}检查两次吗?是的。是“低效”吗?不是你应该关心的事情,或者甚至可以在这种类型的代码中有意义地评论。它是否明确了此代码对人类读者应执行的操作?非常如此,这对于您将要编写的代码很重要。input

蛊毒传说

通常,如果条件在编译时计算为&nbsp;true(例如常量),则 while 循环后不能有代码,如果 while 之后有代码,则 while 循环必须具有某种中断语句。如果一段时间后没有代码,那就没问题了。while(true)break;while([condition])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java