使用扫描读取的java程序不会停止执行
我是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
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)
withloop
在程序中始终具有值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等)读入一个数组,对数组进行排序并打印出来。不客气!如果这个答案对您有帮助,那么您可能想要接受它;-)不客气!如果这个答案对您有帮助,那么您可能想要接受它;-)