Java Scanner util在询问用户电子邮件地址时引发异常



我必须为class编写一个花名册程序。

作业要求您将自己的信息输入到程序中。

为了做到这一点,我在测试类中向一个新的Student对象(me)添加了一个scanner部分,它在其中询问我所有的构造函数参数。

其中之一就是电子邮件地址。我无法让它发挥作用,因为每次我输入电子邮件地址时,都会出现一系列异常。

以下是输出示例:

What is your first name?
Banning
What is your last name?
Lyth
What is your email address?
banninglyth@live.com
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at StudentRosterBLYTH.StudentRosterTest.main(StudentRosterTest.java:68)
C:UsersbanniAppDataLocalNetBeansCache8.2executor-snippetsrun.xml:53: Java returned: 1
BUILD FAILED (total time: 14 seconds)

这是我所掌握的测试类。最后一节是抛出错误。

import java.util.ArrayList;
import java.util.Scanner;
/**
*
* @author banni
*/
public class StudentRosterTest {
static int studentID;
static String firstName
static String lastName;
static String emailAddress;
static int age;
static int[] grades;
public static Scanner input = new Scanner(System. in );
public static void main(String[] args) {
ArrayList <Student> students = new ArrayList <Student> ();
students.add(new Student(studentID, firstName, lastName, emailAddress, age));
studentID = 1;
firstName = "John";
lastName = "Smith";
emailAddress = "John1989@google.com";
age = 20;
students.add(new Student(studentID, firstName, lastName, emailAddress, age));
studentID = 2;
firstName = "Suzan";
lastName = "Erickson";
emailAddress = "Erickson_1990@gmail.com";
age = 19;
students.add(new Student(studentID, firstName, lastName, emailAddress, age));
studentID = 3;
firstName = "Jack";
lastName = "Napol";
emailAddress = "The_Lawyer99yahoo.com";
age = 19;
students.add(new Student(studentID, firstName, lastName, emailAddress, age));
studentID = 4;
firstName = "Erin";
lastName = "Black";
emailAddress = "Erin.black@comcast.net";
age = 22;
students.add(new Student(studentID, firstName, lastName, emailAddress, age));
studentID = 5;
//Begin asking for new Student entry
firstName = input.next();
System.out.println("What is your first name?");
lastName = input.next();
System.out.println("What is your last name?");
emailAddress = input.next();
System.out.println("What is your email address?");
age = input.nextInt();
System.out.println("How old are you?");
}
}

所以,我想问大家的是,我做错了什么?是At Sign还是我完全疯了?

还有,是什么?我一分钟前刚刚发布了这个,并且已经有了-rep?wat.png

当您在请求电子邮件时使用nextInt(),您的下一个电话都会一个接一个地断开。您应该使用.nextLine()作为字符串输入,使用.nextInt()作为年龄。

studentID = 5;
//Begin asking for new Student entry
System.out.println("What is your first name?");
firstName = input.nextLine();
System.out.println("What is your last name?");
lastName = input.nextLine();
System.out.println("What is your email address?");
emailAddress = input.nextLine();
System.out.println("How old are you?");
age = input.nextInt();

最新更新