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

时间:2013-12-08 05:25:56

标签: java java.util.scanner

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

如果输入String,循环会中断。我想要做的是在只有第一个输入没有更长的变量来处理时中断。

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); 
  }
}

1 个答案:

答案 0 :(得分:0)

不是100%确定你想要完成什么,而是回答这个问题:

  

“..每当找不到更长的类型时,它会要求用户提供另一个输入而不是打破循环。”

我刚刚使用了try/catch块。如果输入不是数字,则会打破循环。您可以继续输入数字并按Enter键,如果输入不是数字,则循环将break;,它将打印出连接的数字。

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);
    }
}

编辑:扫描一行

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
}