我有以下方法:
public void addStudent(){
String fName, lName;
double mGrade, fGrade;
System.out.print("\nEnter first name: ");
Scanner in = new Scanner(System.in);
fName = in.nextLine();
System.out.print("\nEnter last name: ");
lName = in.nextLine();
System.out.print("\nEnter midterm grade: ");
mGrade = in.nextDouble();
System.out.print("\nEnter final grade: ");
fGrade = in.nextDouble();
Student toAdd = new Student(fName, lName, mGrade, fGrade);
students.add(toAdd);
System.out.println("\nStudent record added.\n");
System.out.println(students.size());
}
如何检查用户是否键入了中期成绩和最终成绩的整数以外的其他内容?如果他们输入一个非整数,我希望该方法只是请求用户再次键入该值。我猜我必须使用do-while循环。但我不知道如何检查类型...
谢谢!
答案 0 :(得分:2)
您可以使用Scanner.next()
并尝试将其解析为您想要的类型(例如,使用Integer.parseInt(x)
解析为整数,如果失败(抛出和异常),请尝试再次执行此操作。
答案 1 :(得分:1)
您可以使用以下方法:来自扫描仪的nextInt()
或者你可以检查字符串是否是这样的整数:
if( someString.matches("\\d+") ) {
// it is
} else {
// it isn't
}
答案 2 :(得分:1)
是的,do-while效果最佳。
int midterm;
System.out.printLn("Enter midterm grade");
do
{
try {
string s = in.nextLine();
midterm = Integer.parseInt(s);
break;
}
catch (Exception e)
{
System.out.printLn("Couldn't parse input, please try again");
}
}
while (true);
答案 3 :(得分:1)
在循环中运行输入法,如果用户输入的是有效整数或双精度之外的内容,请重复询问输入。
答案 4 :(得分:1)
你可以试试这个
import java.io.*;
import java.util.Scanner;
public class Test {
public static void main(String args[]) throws Exception {
String input;
int ch1;
float ch2;
String ch3;
Scanner one = new Scanner(System.in);
input = one.nextLine();
try {
ch1 = Integer.parseInt(input);
System.out.println("integer");
return;
} catch (NumberFormatException e) {
}
try {
ch2 = Float.parseFloat(input);
System.out.println("float");
return;
} catch (NumberFormatException e) {
}
try {
ch3 = String.valueOf(input);
System.out.println("String");
} catch (NumberFormatException e) {
}
}
}