Java 如何只接受一次多行输入,并确保不会再次要求用户输入

Java 如何只接受一次多行输入,并确保不会再次要求用户输入,java,java.util.scanner,Java,Java.util.scanner,我曾试图解决3n+1问题,结果非常接近。我认为这里发生的是,答案应该是一次接受多行输入,而不应该要求用户再次输入。我已经在一个以hasNextLong()为条件的循环中尝试了nextLine()方法,但问题是,每当它找不到更多的长类型时,它就会要求用户提供另一个输入,而不是中断循环。不管用户输入多少行,有没有办法确保它只接受一次输入 如果输入字符串,循环将中断。我想做的是在只有第一个输入没有更多的长变量要处理时中断 import java.util.Scanner; import java.io

我曾试图解决3n+1问题,结果非常接近。我认为这里发生的是,答案应该是一次接受多行输入,而不应该要求用户再次输入。我已经在一个以hasNextLong()为条件的循环中尝试了nextLine()方法,但问题是,每当它找不到更多的长类型时,它就会要求用户提供另一个输入,而不是中断循环。不管用户输入多少行,有没有办法确保它只接受一次输入

如果输入字符串,循环将中断。我想做的是在只有第一个输入没有更多的长变量要处理时中断

import java.util.Scanner;
import java.io.*;

public class te{
  public static void main(String[] args){
    Scanner key=new Scanner (new BufferedInputStream(System.in));
    String s="";
    while(key.hasNextInt()){
      System.out.println("Entered loop");
      s=s+""+key.nextLong();
    }   
    System.out.println(s); 
  }
}

无法100%确定您的目标,但要回答此问题:

。当它找不到更多的长类型时,它会要求用户提供另一个输入,而不是中断循环

我刚刚使用了一个
try/catch
块。如果输入不是一个数字,它将中断循环。您可以继续输入数字并按enter键,如果输入的不是数字,循环将
中断
并将打印出连接的数字

import java.util.Scanner;

public class StackOverflow {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        String s = "";
        System.out.println("Enter Numbers: ");

        while (true) {
            try {
                s += String.valueOf(scanner.nextInt());  // if input is not an int
            } catch (Exception ex) {                     // it will throw exception
                break;
            }
        }
        System.out.println(s);
    }
}
编辑:扫描一行


@peeskillet,他可能指的是这个问题:请解释一下你所说的“当只有第一个输入没有更多的长变量要处理时中断”是什么意思。。。hasNextLong()继续处理长变量,只要它找到任何。。。当它找不到更多信息时,它会要求用户提供另一个输入。。。现在我想要的不是问用户我希望循环在那一点被打破谢谢,但我已经尝试了这些东西。。。就像在给定空白条目或字符串时中断循环一样。。。但我认为uva在线法官建议代码一次获取多行输入并打印结果。所以我必须打破为我输入的循环。。。一旦用户点击回车键。。。为了确保我的代码不会包含更多的条目,如果不太长的话,也许你想发布完整的说明(verbatum)。至少相关部分。扫描仪dd=新扫描仪(新的BufferedInputStream(System.in));虽然(dd.hasNextLong(){cas[0][aa]=dd.nextLong();cas[1][aa]=dd.nextLong();result[aa]=check(cas[0][aa],cas[1][aa]);aa++;}我希望这个循环能够只接受一个输入并中断,而不是向用户请求另一个输入,但它们在同一行吗?或者,是否有一个输入为每个玲按下,他们是在单独的行?或任何可能的方式,我可以采取多行输入,但只有一个镜头。。。并拯救他们。。并且不会要求用户再次输入。。比如要求用户提供一个空条目或者类似的东西。。。总之,我需要多行输入。。只有一次机会。。不要求用户提供任何特定的终止代码。。但要在第一次输入后自动终止输入
Scanner input = Scanner(System.in);

System.out.printline("Enter some numbers: ");

String line = scanner.nextLine();
Scanner lineScanner = new Scanner(line);

while (lineScanner.hasNextLong()){
    long num = lineScanner.nextLong();
    // do something with num
}