質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Q&A

1回答

1489閲覧

IllegalArgumentExceptionを使用した例外処理ができない

Oracle

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

1グッド

1クリップ

投稿2017/07/29 07:49

編集2022/01/12 10:55

長文失礼します。

1つの整数を入力し、それを2倍、2乗した値を表示するクラスを作成しました。

import java.util.Scanner; import java.io.*; public class TEST1 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner i = new Scanner (System.in) ; int a = i.nextInt(); int t = calculationDuble(a); int s = calculationSquare(a); System.out.println(a + "を2倍した値は" + t); System.out.println(a + "を2乗した値は" + s); } //2倍の計算式 public static int calculationDuble(int x) throws IllegalArgumentException{ return 2 * x; } //2乗の計算式 public static int calculationSquare(int y) { return y * y; } }

上記で作成したクラスのメンバメソッドを使用して
入力値の2倍と入力値を階乗した値の積を表示する
クラスを新たに作成しました。

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class TEST2 { public static void main(String[] args)throws IOException { // TODO 自動生成されたメソッド・スタブ BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); String str; int a; System.out.print("1~9までの整数を入力して下さい"); System.out.println(); str = buffer.readLine(); a= Integer.parseInt(str); int j = 1; int y = 0; y = TEST1.calculationDuble(a); for (int i=1; i<=a; i++ ) { j*=i; } System.out.println(a+"の2倍と階乗値の積の値は"+y*j); } }

ここから例外処理について質問させて下さい。

・TEST2クラスについて、入力された文字列が1から9までの整数以外の場合、
メッセージ「1から9までの整数を入力してください」の
エラーメッセージを出力する方法をご教示下さい。

処理要件として下記の例外クラスをスローします
★IllegalArgumentException

また押さえておきたいポイントとして下記3つの処理があります
①例外インスタンスの生成/throw
②メンバメソッドのthrows宣言
③例外のcatch(try~catch・finally)

②はTEST1クラスのcalculationDubleメソッドでthrows宣言を行い
例外インスタンスの生成もcalculationDubleメソッド内で行いましたが
文字列と数字を判定する方法がわかりませんでした。
if文で処理できるものだと思いますが。
③のtry~catchもcalculationDubleメソッド内で行いましたが
エラーが出力されてしまいました。

上記ことを交えてIllegalArgumentExceptionを使用した
例外処理の回答を何卒お願い致します。

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/07/30 16:29

そもそも、あなたはJavaの例外についてどこまでわかっているのでしょうか?
guest

回答1

0

まず、整数の判定方法ですが、探せばいくらでもあると思います。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1217946422

java

1try{ 2 a= Integer.parseInt(str); 3}catch( NumberFormatException e ){ 4 //IllegalArgumentExceptionをスロー 5} 6//try-catchで引っかからなかった後に0より大きく 7//10より小さい判定をする

IllegalArgumentExceptionのthrow例

投稿2017/07/30 13:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Oracle

2017/08/01 04:49

ご回答いただきありがとうございました。 質問がわかりづらく申し訳ございません。 整数の判定方法は理解できることができました。 dwarfさんからいただいたご回答を参考にして 正しい値が得られるようにもう少し試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問