检查输入类型……怎么样?

我有以下方法:

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循环。 但我不知道怎么检查类型……

谢谢!

是的,一次做的最好。

  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); 

您可以使用Scanner.next()并尝试将其解析为您想要的类型(例如,使用Integer.parseInt(x)解析为整数,如果失败(抛出和exception),请尝试再次执行此操作。

您可以使用Scanner中的方法:nextInt()

或者,您可以检查字符串是否是这样的整数:

 if( someString.matches("\\d+") ) { // it is } else { // it isn't } 

在循环中运行input方法,如果用户输入有效整数或双精度之外的内容,请重复询问输入。

你可以试试这个

 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) { } } }