2015-09-18 25 views
0

我希望我的代码将InputMismatchException的名称更改为NotANumberException。 这是我的代码,如果我输入一个非数字字符,它会形成一个错误。我应该如何解决这个问题?将InputMismatchException转换为用户定义的异常

主类:

import java.util.*; 

public class Grade { 

    public static void main(String args[]){ 
     Scanner input = new Scanner(System.in); 
     int grade; 
     String remark; 
     try{ 
      System.out.print("Enter Grade: "); 
      grade = input.nextInt(); 
     } 
     catch(NotANumberException e){ 
      System.out.println(e.notgetMessage()); 
     } 
    } 
} 

二等:

import java.util.*; 

public class NotANumberException extends InputMismatchException{ 

    public String notgetMessage(){ 
     return "You did not input a number. Please try again!"; 
    } 

} 
+0

为什么你要这么做?最终目的是什么? – rajuGT

+0

这是我们的功课。 – Mariel

+0

你的家庭作业需要你创建一个自定义的异常类吗? – TNT

回答

1

你抓不到InputMismatchException时的亚型的异常在你的代码。

此外,您不能更改java.util Scanner.nextInt方法来抛出您的自定义异常类,因为它是Java的util库。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt()

为您assignement可能的解决方案是

在返回INT

public class Grade { 

    //New method 
    public int getIntegerInput() throws NotANumberException { 
     Scanner input = new Scanner(System.in); 
     try { 
      return input.nextInt(); 
     } catch(InputMismatchException e) { 
      throw new NotANumberException(); 
     } 
    } 

    public static void main(String args[]){ 

     int grade; 
     String remark; 
     try{ 
      System.out.print("Enter Grade: "); 
      grade = getIntegerInput(); 
     } 
     catch(NotANumberException e){ 
      System.out.println(e.notgetMessage()); 
     } 
    } 
} 

PS你的第一类创建的方法:当你说这是一个任务,你尽量努力学习Java类型系统并扩展异常类并添加抛出签名。这只是一个帮助你完成任务的原型。

+0

谢谢,将尽! – Mariel

2

您必须捕获Scanner类实际抛出的异常,然后对其执行某些操作,例如创建并抛出自定义异常。

catch(InputMismatchException e){ 
     throw new NotANumberException(e); 
    } 
0

package com.geek.test;

import java.util.InputMismatchException;

进口java.util.Scanner的;

公共类TEST4 {

public static void main(String args[]){ 
    Scanner input = new Scanner(System.in); 
    int grade; 
    String remark; 
     try{ 
      System.out.print("Enter Grade: "); 
      grade = input.nextInt(); 
     } 
     catch(InputMismatchException e){ 
      System.out.println("You did not input a number. Please try again!"); 

     } 
    } 

}