我想这样做,以便用户输入错误的数据类型作为figureNumber将看到来自我的消息说"请输入一个整数"而不是正常的错误消息,并将给予另一个输入整数的机会。我开始尝试使用try和catch,但我无法让它工作。
对不起,如果这是一个愚蠢的问题。这是我参加java课程的第二周。
import java. util.*;
public class Grades {
public static void main(String args []) {
Scanner stdin = new Scanner(System.in);
System.out.println();
System.out.print(" Please enter an integer: ");
int grade = stdin.nextInt();
method2 ();
if (grade % 2 == 0) {
grade -= 1;
}
for(int i = 1; i <=(grade/2); i++) {
method1 ();
method3 ();
}
}
}
答案 0 :(得分:0)
Scanner stdin = new Scanner(System.in);
try {
int figureNumber = stdin.nextInt();
eagle();
if (figureNumber % 2 == 0) { //determines if input number of figures is even
figureNumber -= 1;
}
for(int i = 1; i <=(figureNumber/2); i++) {
whale();
human();
}
}
catch (InputMismatchException e) {
System.out.print("Input must be an integer");
}
您可能想要做这样的事情。别忘了在.java文件的开头添加import java.util.*;
。
答案 1 :(得分:0)
您想要表格中的内容:
一个不错的选择是:
Integer num = null; // define scope outside the loop
System.out.println("Please enter a number:"); // opening output, done once
do {
String str = scanner.nextLine(); // read anything
if (str.matches("[0-9]+")) // if it's all digits
num = Integer.parseInt(str);
else
System.out.println("That is not a number. Please try again:");
} while (num == null);
// if you get to here, num is a number for sure
do while
是一个不错的选择,因为你总是至少进行一次迭代。
将整行读作字符串非常重要。如果您尝试阅读int
而其中之一,那么通话将会爆炸。
答案 2 :(得分:0)
public static void main(String args[]) {
Scanner stdin = new Scanner(System.in);
System.out.println();
System.out.print(" Welcome! Please enter the number of figures for your totem pole: ");
while (!stdin.hasNextInt()) {
System.out.print("That's not a number! Please enter a number: ");
stdin.next();
}
int figureNumber = stdin.nextInt();
eagle();
if (figureNumber % 2 == 0) { //determines if input number of figures is even
figureNumber -= 1;
}
for (int i = 1; i <= (figureNumber / 2); i++) {
whale();
human();
}
}
您需要检查输入。如果输入是整数,则hasNextInt()方法为true。因此,while循环要求用户输入一个数字,直到输入为数字。调用next()方法很重要,因为它将从扫描程序中删除先前错误的输入。
答案 3 :(得分:0)
您可以在分配之前测试该值。你不需要做任何匹配。
...
int figureNumber = -1;
while (figureNumber < 0) {
System.out.print(" Welcome! Please enter the number of figures for your totem pole: ");
if (stdin.hasNextInt()){
figureNumber = stdin.nextInt(); //will loop again if <0
} else {
std.next(); //discard the token
System.out.println("Hey! That wasn't an integer! Try again!");
}
}
...