【发布时间】:2018-09-03 13:29:14
【问题描述】:
这是我用于输入和打印输出的简单 Java 代码。
import java.util.Scanner;
//weird input problem
class Student{
private int rollno;
private String name;
public void getRollNo(){
Scanner sc = new Scanner(System.in);
System.out.println("Enter name and roll no");
name=sc.next();
rollno=sc.nextInt();
}
public void putRollNo(){
System.out.println("Name="+name);
System.out.println("Regno="+rollno);
}
}
class Marks extends Student{
Scanner sc = new Scanner(System.in);
protected int Mark1,Mark2,Mark3;
public void getMarks(){
System.out.println("Enter 3 Marks");
Mark1=sc.nextInt();
Mark2=sc.nextInt();
Mark3=sc.nextInt();
}
public void putMarks(){
System.out.println("Mark1="+Mark1);
System.out.println("Mark2="+Mark2);
System.out.println("Mark3="+Mark3);
}
}
class Result extends Marks{
void computeDisplay(){
float total = Mark1 + Mark2 + Mark3;
System.out.println("Total="+ total);
}
}
public class MyClass{
public static void main(String[] args){
Result r = new Result();
r.getRollNo();
r.getMarks();
r.putRollNo();
r.putMarks();
r.computeDisplay();
}
}
因此,当逐行输入(交互式控制台输入)时,它可以完美运行,这就是我的 IDE 控制台显示的内容
Enter name and roll no
John
1234
Enter 3 Marks
11
22
33
Name=John
Regno=1234
Mark1=11
Mark2=22
Mark3=33
Total=66.0
真正的问题是当我将输入作为文本给出时。 我将此作为输入-
John
1234
11
22
33
看起来程序只是忽略了一些输入(在这种情况下是“标记”),所以我不得不再次输入标记。控制台输出-
Enter name and roll no
John
1234
11
22
33Enter 3 Marks
1
2
3
Name=John
Regno=1234
Mark1=1
Mark2=2
Mark3=3
Total=6.0
当我在jdoodle compiler 中输入“交互模式”设置为“关闭”时,它只会返回此错误-
Enter name and roll no
Enter 3 Marks
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:858)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.nextInt(Scanner.java:2161)
at java.base/java.util.Scanner.nextInt(Scanner.java:2115)
at Marks.getMarks(MyClass.java:22)
at MyClass.main(MyClass.java:42)
Command exited with non-zero status 1
我不知道。请帮忙
【问题讨论】:
标签: java debugging input runtime-error stdin