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

标签 java java.util.scanner

我必须为类(class)编写一个名册程序。

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

为此,我在测试类中添加了一个扫描器部分到一个新的 Student 对象(我),其中它要求我提供所有构造函数参数。

其中之一是电子邮件地址。我无法让它工作,因为每次我输入我的电子邮件地址时,我都会遇到一系列异常。

以下是输出示例:

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:\Users\banni\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.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();

关于Java Scanner util 在询问用户电子邮件地址时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42014326/

相关文章:

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 我可以使用哪种变量类型在 Java 中保存大量数字(30 位以上)?

java - 如何在不使用 contains() 和 xpath 的情况下从标签中检索特定文本?

java - 在 Jaxb 中使用具有相同名称的不同标签进行解码

java - 我应该在哪里使用命令行参数而不是扫描仪?

java.util.scanner - 在由关闭流初始化的 Scanner 上调用 next() 不会抛出 IllegalStateException

java - 在android中比较String的ArrayList的有效方法是什么

java - 开源 Java 国际象棋引擎?

java - 如何在 Java 8 中使用 CSV 值作为构造函数参数

java - 线程中出现异常 "main"java.util.InputMismatchException 错误消息