【问题标题】:How to handle an object in java? [closed]如何处理java中的对象? [关闭]
【发布时间】:2020-01-30 06:18:10
【问题描述】:

在下面的代码中,每次我运行程序时,程序都会停止并向我发送一条 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 !?");
        }

    }
}

【问题讨论】:

  • 有什么问题?
  • 我运行了你的代码,它没有抛出任何InputMismatchException。您面临的具体问题是什么?错误在哪一行?什么是堆栈跟踪?你想达到什么目的?你有什么问题?

标签: java oop object exception error-handling


【解决方案1】:

您的代码的问题是您期望 double 但用户正在输入字符串,因此您可以处理如下情况。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2017-11-24
    • 2011-08-28
    相关资源
    最近更新 更多