我是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)
提前谢谢
答案 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
代替int
(t
)。
答案 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;
}