如何在Java中处理对象? [关闭]

问题描述 投票:-1回答:1

在下面的代码中,每次我运行程序时,程序都会停止并给我一条消息给InputMismatchException。当然,这是我程序的一部分。

package listbasics;

import java.util.*;

 class AdjustStudents {

    private final ArrayList<Student> stu = new ArrayList<>();    // a Student ArrayList 

    public void addStudent(String name, double gpa) throws InputMismatchException {
        Student stu1 = new Student(name, gpa);
        stu.add(stu1);
    }
}

// ---------两个单独的类--------------

package listbasics;

import java.util.*;

    public class ArrayListBasics {

    private static Scanner input = new Scanner(System.in);
    private static AdjustStudents ad = new AdjustStudents();

    public static void main(String[] args) {

        addNewStudent();

    }

    public static void addNewStudent() {
        System.out.println("----- Adding A New Student -----");

        System.out.println(" Please enter student Name :");
        String name = input.nextLine();
        System.out.println(" Please enter student GPA :");
        try {
            double gpa = input.nextDouble();
            input.nextLine();
            ad.addStudent(name, gpa);
        } catch (InputMismatchException ex) {
            System.out.println("Please Enter Valid Value !?");
        }

    }
}
java oop object exception error-handling
1个回答
0
投票

您的代码有问题,您希望获得双精度,但用户正在输入String,因此您可以处理以下情况。

Scanner有许多hasNextXXX方法可用于验证输入。这是一个简短的说明:

对于Int,您可以像-input.hasNextInt()对于Double,您可以像-input.hasNextDouble()

进行检查

对于您的示例-

public class ArrayListBasics {

    private static Scanner input = new Scanner(System.in);
    private static AdjustStudents ad = new AdjustStudents();

    public static void main(String[] args) {

        addNewStudent();

    }

    public static void addNewStudent() {
        System.out.println("----- Adding A New Student -----");

        System.out.println(" Please enter student Name :");
        String name = input.nextLine();
        double gpa = 0;
        System.out.println(" Please enter student GPA :");
        do {
            while (!input.hasNextDouble()){
                System.out.println(" Please enter valid GPA :");
                input.next();
            }
            gpa = input.nextDouble();
        }while (gpa  <= 0);
        ad.addStudent(name, gpa);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.