import java.util.Scanner;
public class Exercise5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Input first number: ");
int num1 = in.nextInt(5);
System.out.print("Input second number: ");
int num2 = in.nextInt(25);
System.out.println(num1 + " x " + num2 + " = " + num1 * num2);
}
}
**这是我的java代码,expect输出应该是这样的:
输入第一个数字:25
输入第二个数字:5
25 x 5 = 125
插入代码并运行后,输出与答案
的区别太大了这是输出:
Input first number: Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at Exercise5.main(Exercise5.java:27)
如何修复我的代码?
答案 0 :(得分:2)
" 5" in in.nextInt(5);基数。你需要它吗?如果你使用没有参数的nextInt()方法,程序是否有效?
另外,由于某些原因,这两个版本都适用于我而没有错误:
// output of nextInt(radix) version
java Excercise5
Input first number: 32
Input second number: 23
17 x 53 = 901
// output of nextInt() version
java Excercise5
Input first number: 5
Input second number: 25
5 x 25 = 125
答案 1 :(得分:2)
答案 2 :(得分:1)
你不应该把5和25放在in.nextInt的括号内,你会在控制台行内写入值,扫描仪会读取它。
所以相反
int num1 = in.nextInt(5);
应该看起来像
int num1 = in.nextInt();
答案 3 :(得分:1)
无需为nextInt指定基数。
只需使用nextInt的no args版本。
替换
int num1 = in.nextInt(5);
<强>与强>
int num1 = in.nextInt();
和强>
int num2 = in.nextInt(25);
<强>与强>
int num2 = in.nextInt();
答案 4 :(得分:1)
固定代码
import java.util.Scanner;
public class Exercise5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Input first number: ");
int num1 = in.nextInt();
System.out.print("Input second number: ");
int num2 = in.nextInt();
total = num1*num2
System.out.println(num1 + " x " + num2 + " = " + total);
}
}
您的nextInt()将捕获用户输入,因此无需输入值。当您在IDE的输出窗口中出现提示时,您将手动将它们放入。
我还将num1和num2放入单独的变量(例如,int total = num1 * num2),然后打印出println中的总数:)
答案 5 :(得分:0)
此外,调用nextInt()
后,新行字符仍在缓冲区中。在程序按照您的意图运行之前,您还需要解决此问题。
Understanding Scanner's nextLine(), next(), and nextInt() methods