• ベストアンサー

範囲外の数値を代入したらエラーを出して止まるようにしたい

大きさが3の配列に対して,たとえば, mat[10] = 4 のように代入しようとすると 「OutOfBoundary 云々」というエラーメッセージが出て プログラムが止まりますよね. 同じように,変数に代入できる範囲を制限できないでしょうか? 次のようなメソッドを作りたいたのですが, x に代入できる範囲を (-1, 1) に制限したいと思っています.    public void test(double x) {       if (x >= -1 && x <= 1) {          this.x = x;       } else {          // ここで 「(1, 1)の範囲じゃなきゃダメ」とう          // ことを伝えるメッセージを出して,          // プログラムを止めたい       }    } どうすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Gishi
  • ベストアンサー率57% (11/19)
回答No.3

IllegalArgumentException をスローするのが一般的だと思います。 よく分からなければ、「例外」について勉強することをおすすめします。 public void test(double x) {  if (x < -1 || x > 1) {   throw new IllegalArgumentException("" + x);  }  this.x = x; } より詳しくメッセージを表示したいなら 例外のコンストラクタにエラーメッセージを渡してください。   throw new IllegalArgumentException    ("引数は(-1,1)の範囲でなくてはいけません")

white-tiger
質問者

補足

これは,目的そのものズバリでいいですね. ありがとうございます.

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

私も例外を投げるようにすればイイと思います。 MyClass は、自分のクラスに変更 ----------------------------------------------------------------    public void test(double x) throws MyClassException {       if (x >= -1 && x <= 1) {          this.x = x;       } else { throw new MyClassException("(1, 1)の範囲じゃなきゃダメ!");       }    } class MyClassException extends Exception { public MyClassException() { super(); } public MyClassException(String msg){ super(msg); } }

white-tiger
質問者

お礼

ありがとうございます.

  • process9
  • ベストアンサー率29% (81/271)
回答No.1

Exceptionクラスの派生クラス作って 例外を発行すればいいのでは?

関連するQ&A