如何在42处停止打印输入?

时间:2014-04-11 19:51:03

标签: java

我在输入数字的网站上遇到问题:

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中运行它时,它可以工作,所以我不确定问题是什么。谢谢!

2 个答案:

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