Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用扫描读取的java程序不会停止执行_Java - Fatal编程技术网

使用扫描读取的java程序不会停止执行

使用扫描读取的java程序不会停止执行,java,Java,我是Java世界的新手。我写了这个程序,它读取字符串数组。。。当我运行它时,它从不停止?!!我应该添加/更改什么以使其结束扫描 import java.util.*; public class Ex21 { public static void main(String[] args) { int i, n = 5; String c; ArrayList<String>words = new ArrayList<>(); System.o

我是Java世界的新手。我写了这个程序,它读取字符串数组。。。当我运行它时,它从不停止?!!我应该添加/更改什么以使其结束扫描

import java.util.*;

public class Ex21 {
public static void main(String[] args) {
    int i, n = 5;
    String c;
    ArrayList<String>words = new ArrayList<>();
    System.out.println("Enter multi strings: ");
    Scanner input = new Scanner(System.in);
    boolean loop = true;
    while(loop) {
        words.add(input.next());
        Collections.sort(words);
        System.out.println("The sorted list is: " + words);
    }
    }

}
import java.util.*;
公共类Ex21{
公共静态void main(字符串[]args){
int i,n=5;
字符串c;
ArrayListwords=新的ArrayList();
System.out.println(“输入多个字符串:”);
扫描仪输入=新扫描仪(System.in);
布尔循环=真;
while(循环){
words.add(input.next());
集合。排序(单词);
System.out.println(“排序列表为:“+字”);
}
}
}

A
,而
循环按定义继续执行其主体,直到其条件(在本例中,变量
循环
)计算为
false
。您从未在
while
-loop中将
loop
设置为
false
,因此该条件将永远不会计算为
false
,循环也永远不会结束


此外,您似乎希望对用户输入的单词列表进行排序。我不建议在循环的每次迭代中调用
Collections.sort
。也许可以考虑使用一种数据结构,使其元素能够自行排序,例如。或者,至少只在循环后直接调用
sort
方法一次。

A
,而
循环按定义继续执行其主体,直到其条件(在本例中,变量
循环
)计算为
false
。您从未在
while
-loop中将
loop
设置为
false
,因此该条件将永远不会计算为
false
,循环也永远不会结束

while(condition) {
     /* do something */
}
此外,您似乎希望对用户输入的单词列表进行排序。我不建议在循环的每次迭代中调用
Collections.sort
。也许可以考虑使用一种数据结构,使其元素能够自行排序,例如。或者,至少只在循环之后直接调用
sort
方法一次

while(condition) {
     /* do something */
}
意思是/*做某事*/除非条件==假,否则发生,在你的情况下它总是真的,这就是为什么它不会停止。因此,Java在您的情况下表现良好

意思是/*做某事*/除非条件==假,否则发生,在你的情况下它总是真的,这就是为什么它不会停止。因此Java在您的情况下运行正常。

而(循环)
循环
在您的程序中始终具有值
true
,这就是所谓的
无止境循环
,顾名思义,它永远不会结束,这就是您正在经历的

要使循环停止,必须将
loop
的值设置为
false
(如果满足某些条件),或使用关键字
break
终止循环

例如,一个条件可能是,输入某个单词witch后,循环终止,类似于
“exit”

下面是一个如何将
loop
设置为
false

String word = input.next();
boolean loop = ! "exit".equalsIgnoreCase(word);
while (loop) {
    words.add(word);
    Collections.sort(words);
    System.out.println("The sorted list is: " + words);
    word = input.next();
    loop = ! "exit".equalsIgnoreCase(word);
}
System.out.println("Bye!");
下面是另一个示例,您可以使用
break

while (true) {
    String word = input.next();
    if("exit".equalsIgnoreCase(word)) {
        break;
    }
    words.add(word);
    Collections.sort(words);
    System.out.println("The sorted list is: " + words);
}
System.out.println("Bye!");
请注意,arraylist可以包含的集合中禁止使用单词
exit
,您可以更改程序以将其保存。

while(loop)
with
loop
在程序中始终具有值
true
,这就是所谓的
无止境循环,正如名字所说,它永远不会结束,这就是你正在经历的

要使循环停止,必须将
loop
的值设置为
false
(如果满足某些条件),或使用关键字
break
终止循环

例如,一个条件可能是,输入某个单词witch后,循环终止,类似于
“exit”

下面是一个如何将
loop
设置为
false

String word = input.next();
boolean loop = ! "exit".equalsIgnoreCase(word);
while (loop) {
    words.add(word);
    Collections.sort(words);
    System.out.println("The sorted list is: " + words);
    word = input.next();
    loop = ! "exit".equalsIgnoreCase(word);
}
System.out.println("Bye!");
下面是另一个示例,您可以使用
break

while (true) {
    String word = input.next();
    if("exit".equalsIgnoreCase(word)) {
        break;
    }
    words.add(word);
    Collections.sort(words);
    System.out.println("The sorted list is: " + words);
}
System.out.println("Bye!");

请注意,
exit
这个词在arraylist可以包含的集合中是被禁止的,您可以更改程序以将其保存。

您理解
while(loop)
的意思吗?while(loop)的意思是只要loop为真,继续在while内执行什么。你从来没有错误的循环…你想做什么?@SLaks没有输入会使循环“错误”吗?我想不会,但是你会如何修复它?@Noob:我正在尝试将字符串列表(如sys、shi、eds等)读入数组,对数组排序并打印它。你明白while(循环)
的意思吗?while(循环)意思是只要循环是真的,就继续在while中做什么。你永远不会做假循环…你想做什么?@SLaks没有输入不会使循环“假”吗?我想不会,但那你怎么解决呢?@Noob:我正在尝试将字符串列表(sys、shi、eds等)读入一个数组,对数组进行排序并打印出来。不客气!如果这个答案对您有帮助,那么您可能想要接受它;-)不客气!如果这个答案对您有帮助,那么您可能想要接受它;-)