[英]problem is while loop is not ending in taking input paragraph using system.in in Java
我在使用System.in将小孔段落作为java中的输入并将其存储在数组中时遇到问题。 但是问题是while循环没有结束并且程序卡在了循环中。 我尝试了很多方法,但是循环没有结束。
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;
}
}
sc是Scanner对象。 当您将sc与null进行比较时,您将永远不会得到true,因为sc永远不会为null。 另外,您的代码似乎有很多错误。 您的问题也不清楚。 请提供正确的问题...-谢谢Tejan Gandhi
Dt:7月29日(阅读您的评论后):
代码分为两部分,一个部分扫描字符,另一部分扫描行。.因为第一个“ while”循环比较sc(这是一个Scanner对象),所以它永远不能为null,循环也永远不会结束。 .equals(null)sc.hasNext()
告诉我这是否适合您。
当您使用“ sc.hasNextline”时,应在判断语句之前放置“ Scanner sc = new Scanner(System.in);”,如下所示:
int num = 0;
while (true) {
System.out.println("Please input a number");
Scanner sc = new Scanner(System.in);
if (sc.hasNextDouble()) {
num = sc.nextDouble();
} else {
System.out.println("It is not a number,please try again!");
System.out.println("============================");
}
}
在第一个循环之后,您已经有一系列的段落,因此为什么不清楚为什么需要第二个循环。 我也把扫描仪在try ()
因为扫描仪是Closeable
,因此在年底被关闭。
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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.