问题是,在Java中,当循环并没有以使用system.in获取输入段落结束时
我在使用System.in在java中将一个洞段落作为输入并将其存储在数组中时遇到问题。但问题是当循环并没有结束,程序卡在循环中时。我尝试了很多方法,但循环并没有结束问题是,在Java中,当循环并没有以使用system.in获取输入段落结束时,java,arrays,string,inputstream,user-input,Java,Arrays,String,Inputstream,User Input,我在使用System.in在java中将一个洞段落作为输入并将其存储在数组中时遇到问题。但问题是当循环并没有结束,程序卡在循环中时。我尝试了很多方法,但循环并没有结束 Scanner sc = new Scanner(System.in); ArrayList < String > al = new ArrayList<>(); System.out.print("Please Enter Paragraph + \n"); while (!(sc.equals(nu
Scanner sc = new Scanner(System.in);
ArrayList < String > al = new ArrayList<>();
System.out.print("Please Enter Paragraph + \n");
while (!(sc.equals(null))) {
al.add(sc.next());
}
Scanner sc = new Scanner(System.in);
String para = sc.nextLine();
int x = 0;
while (para != null) {
if (sc.hasNextLine()) {
ParaArray[x] = para;
para = sc.nextLine();
x++;
} else {
para = null;
}
}
Scanner sc=新扫描仪(System.in);
ArrayListal=新的ArrayList();
系统输出打印(“请输入+\n段”);
而(!(sc.equals(null))){
al.add(sc.next());
}
扫描仪sc=新的扫描仪(System.in);
字符串para=sc.nextLine();
int x=0;
while(para!=null){
if(sc.hasNextLine()){
ParaArray[x]=para;
para=sc.nextLine();
x++;
}否则{
para=null;
}
}
sc是扫描仪对象。当您将sc与null进行比较时,您将永远不会得到true,因为sc永远不会为null。而且,您的代码似乎有很多错误。你的问题也不清楚。请提供一个适当的问题。。。
-谢谢
特扬·甘地
Dt:7月29日(阅读您的评论后):
代码有两部分,一部分扫描字符,另一部分扫描行。。因为第一个“while”循环比较sc(扫描对象),所以它永远不能为null,循环永远不能结束。。因此,与其这样做
sc.equals(空)
资深大律师
告诉我这是否对你有效。当你使用“sc.hasNextline”时,你应该在你的判断陈述前加上“Scanner sc=new Scanner(System.in);”,如下所示:
int num=0;
while(true){
System.out.println(“请输入一个数字”);
扫描仪sc=新的扫描仪(System.in);
if(sc.hasNextDouble()){
num=sc.nextDouble();
}否则{
System.out.println(“这不是一个数字,请再试一次!”);
System.out.println(“==============================================”);
}
}
在第一个循环之后,您已经有了一个段落数组,因此不清楚为什么需要第二个循环。
我还将扫描仪放入了一个try()
,因为扫描仪是可关闭的
,所以它在最后是关闭的
import java.util.ArrayList;
import java.util.Scanner;
public class ScanTest {
public static void main(String[] args) {
try (Scanner sc = new Scanner(System.in)) {
ArrayList<String> al = new ArrayList<>();
while (true) {
System.out.println("Please Enter Paragraph + \n");
String readLine = sc.nextLine();
if (readLine.length() == 0) {
break;
}
al.add(readLine);
}
System.out.println("result:"+al);
}
}
}
import java.util.ArrayList;
导入java.util.Scanner;
公共类扫描测试{
公共静态void main(字符串[]args){
try(Scanner sc=新扫描仪(System.in)){
ArrayList al=新的ArrayList();
while(true){
System.out.println(“请输入+\n段”);
字符串readLine=sc.nextLine();
if(readLine.length()==0){
打破
}
al.add(readLine);
}
System.out.println(“结果:+al”);
}
}
}
请在标题中使用正确的大写字母。我想使用system.in将100个字符串作为输入,并将其存储在数组中。问题是当循环未结束,程序仍在tha中,而loopI编辑了答案。下面是出错原因的简短总结:循环没有结束,因为循环中的条件始终为真。你在比较:!sc.equals(null)并且sc是“Scanner”对象。扫描仪对象不能为空,因为您已初始化它。更改while循环中的条件。这是用于双类型输入,但我想使用system.in将一篇文章作为输入