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