生命宇宙和一切

时间:2015-10-18 02:23:17

标签: java

enter image description here

我是CodeChef的新手,我在CodeChef(一个编码的在线平台)编辑器上得到以下输出错误,我无法提交我的代码。

我想问一下

  

1)我的方法是否正确,

     

2)出现此错误?

     

3)为什么我收到编译错误?

MyApproach:

import java.util.Scanner;
class Prog1 {
    public static void main(String[] args) throws java.lang.Exception {
        int a = 0;
        Scanner sc = new Scanner(System. in );
        int t = 1;
        while (t != 0) {
            a = sc.nextInt();
            if (a != 42) System.out.println(a);
            else t = 0;
        }
    }
}

在我的eclipse编辑器中显示的输出是:

  

34
  34个
  53个
  53个
  42

但我在Codechef编辑器上遇到异常:

  

线程“main”java.util.NoSuchElementException中的异常     在java.util.Scanner.throwFor(Scanner.java:862)
    在java.util.Scanner.next(Scanner.java:1485)
    在java.util.Scanner.nextInt(Scanner.java:2117)
    在java.util.Scanner.nextInt(Scanner.java:2076)
    在Prog1.main(Main.java:15)

提前谢谢

2 个答案:

答案 0 :(得分:0)

我猜测问题是你的Scanner试图在不存在时读取文本。试试扫描仪的hasNextInt()方法:

int a = 0;
Scanner sc = new Scanner(System.in);
boolean t = false;
while (!t) {
    if (sc.hasNextInt()) {
        a = sc.nextInt();
        if (a != 42)
            System.out.println(a);
        else
            t = true;
    }
}

此外,您应该使用boolean代替intt)。

答案 1 :(得分:-1)

您缺少if语句的括号。

    while(t!=0)

   {

     a=sc.nextInt();

     if (a != 42) {
         System.out.println(a);
     }
     else {
         t=0;
     }
   }

当到达时不会打印42但是当a等于42时,你需要再次添加系统打印调用:

if (a != 42) {
         System.out.println(a);
     }
     else {
         System.out.println(a);
         t=0;
     }