2017-10-12 9 views
-1

の範囲外の値を入力した場合、私はこれについて苦労しています。 JOptionPaneを使用して入力を行いたい場合、ユーザーが4より大きい数値を入力すると、私が作成したInvalidChoiceExceptionが取得されます。これは重複かもしれないが、私は答えを見つけることができない場合は、私を許してください。誰かが助けてくれることを願います。Javaユーザーがnumber = User Defined Exception JOptionPane

テストクラス

import javax.swing.JOptionPane; 

public class RunThisSh { 

    public static void main (String [] args){ 

     ExceptionTest c = new ExceptionTest(); 

     try { 
      c.process(5); //I want to make this an INPUT in JOptionPane where if the user Enters a number greater than 4 
          // It will display an error 
     //JOptionPane.showInputDialog("Enter a Number: "); 
     } catch (InvalidChoiceException e) { 
      JOptionPane.showMessageDialog(null,"ERROR!"); 
     } 
    } 
} 

これは他のクラスです。

InvalidChoiceExceptionクラス

//TEST PROJECT 
public class InvalidChoiceException extends Exception { 

    private double choice; 

    public InvalidChoiceException (double choice) 
    { 
     this.choice = choice; 
    } 
    public double getChoice() 
    { 
     return choice; 
    } 
} 

ExceptionTestクラス

//TEST PROJECT 
public class ExceptionTest 
{ 

    Object process; 
    public void process (double choice) throws InvalidChoiceException 
    { 
     if (choice > 4) 
     { 
      throw new InvalidChoiceException(choice); 
     } 


    } 
} 
+1

あなたの例外クラスは選択フィールドを持つべきではなく、スーパーコンストラクタを呼び出してStringを渡す必要があります。物事は後方に配線されています。例外に関するチュートリアルに進んでください。 –

+0

IllegalArgumentExceptionをスローしてキャッチしてから、カスタム例外を作成するのではなくcatchブロックで何をしてみてください。 – smitty1

+0

@ smitty1私の教授が私に言ったので。それは事例研究のためであり、彼は教えさえしませんでした。 – eLjA

答えて

0

多分これはあなたが望むものです。上記の彼のコメントで述べたウナギのホバークラフトのフルとして

import javax.swing.JOptionPane; 

public class RunThisSh { 

    public static void main (String [] args){ 

     ExceptionTest c = new ExceptionTest(); 

     try { 
      c.process(5); //I want to make this an INPUT in JOptionPane where if the user Enters a number greater than 4 
          // It will display an error 
     //JOptionPane.showInputDialog("Enter a Number: "); 
     } catch (InvalidChoiceException e) { 
      JOptionPane.showMessageDialog(null,e.getMessage()); 
     } 
    } 
} 

//TEST PROJECT 
class InvalidChoiceException extends Exception { 

    public InvalidChoiceException (String message) 
    { 
     super(message); 
    } 

} 

//TEST PROJECT 
class ExceptionTest 
{ 

    public void process (double choice) throws InvalidChoiceException 
    { 
     if (choice > 4) 
     { 
      throw new InvalidChoiceException("Invalid Choice Entered!"); 
     } 


    } 
} 

、カスタム例外は、スーパーへの呼び出し(文字列のメッセージを)持っている必要があります。このようにして、スーパークラス(Exception)にメッセージを渡し、e.getMessage()を呼び出してcatchブロックでメッセージを取得します。

+0

しかし、どこで番号を入力できますか? – eLjA

+0

ユーザー入力を取り込む方法はいくつかあります。 Java SwingまたはAWT APIを使用してフォームを作成することもできますし、スキャナを使用してコマンドウィンドウにユーザー入力を取り込むこともできますが、この問題はカスタム例外の使用に関するものでした。私は、あなたがどのようにユーザ入力を取得し、この質問の範囲外になるようにそれを行うかについてのチュートリアルを見つける方法を考え出すことを提案します。 – smitty1

関連する問題