Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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中,当循环并没有以使用system.in获取输入段落结束时_Java_Arrays_String_Inputstream_User Input - Fatal编程技术网

问题是,在Java中,当循环并没有以使用system.in获取输入段落结束时

问题是,在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

我在使用System.in在java中将一个洞段落作为输入并将其存储在数组中时遇到问题。但问题是当循环并没有结束,程序卡在循环中时。我尝试了很多方法,但循环并没有结束

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将一篇文章作为输入