我在输入数字的网站上遇到问题:
1 2 88 42 99
它应该输出
1 2 88
代码应该在输入42时停止打印输入,并且它可以正常工作,但是当我将它提交到网站时,它会告诉我它给出了错误的答案。
这是我的代码: http://pastebin.com/y5e8DyHz
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner scan = new Scanner(System.in);
int res;
for(int i=0;i <5; i++) {
res = scan.nextInt();
if (res!=42) {
System.out.println(res);
} else {
System.exit(0);
}
}
}
}
当我在IDEOne中运行它时,它可以工作,所以我不确定问题是什么。谢谢!
答案 0 :(得分:2)
请注意,SPOJ forums中提供了TEST问题的解决方案。它是如何在java中尽快处理输入的一个很好的例子。
答案 1 :(得分:1)
根据您的要求,您必须使用它,如下所示,即使在您的IDE
中也是如此Scanner scan = new Scanner(System.in);
int res;
while (scan.hasNext()) {
res = scan.nextInt();
if (res != 42) {
System.out.println(res);
} else {
System.exit(0);
}
}
理由是@jrbeverly上面提到的作为他的评论
更新1:
如果你的意思是“停止打印输入”,因为程序必须在遇到'42'时退出,你很好。但是,如果您的要求只是丢弃打印数字,让程序运行并接受下一个数字,则删除System.exit(0)。因为System.exit(0)意味着终止JVM以进一步执行程序
更新2:
正如@Giovanni Botta在下面提到的,确切的解决方案在上面提到的链接中提供,片段在这里添加
public class Main
{
public static void main (String[] args) throws java.lang.Exception
{
java.io.BufferedReader r = new java.io.BufferedReader (new java.io.InputStreamReader (System.in));
String s;
while (!(s=r.readLine()).startsWith("42")) System.out.println(s);
}
}