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

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

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

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

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

682閲覧

javaの例外処理のプログラミングで困っています。どのようにしたら改善されますか?

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/11/17 05:10

実行結果
1番目のデータ:[3,4,5] [true]
2番目のデータ:0以下の数値は判定不可能
3番目のデータ:[2,2,3] [false]
4番目のデータ:[5,3,4] [true]

このように表示させたいです。

public class Question01 { public static void main(String[] args) throws PythagorasException { // TODO 自動生成されたメソッド・スタブ int [][] nums= {{3,4,5},{2,-2,1},{2,2,3},{5,3,4}}; int count=1; for(int i=0; i<nums.length; i++) { System.out.print(count+"番目のデータ:"); for(int j=0; j<1; j++) { Pythagoras pythagoras= new Pythagoras(nums[i][0], nums[i][1], nums[i][2]); System.out.print("["+nums[i][0]+","+ nums[i][1]+","+nums[i][2]+"]"); System.out.println(pythagoras); count++; } } try{ // 試験的に例外を投げて... throw new PythagorasException("0以下の数値は判定不可能"); }catch(Exception e){ e.printStackTrace(); } } public static Pythagoras getPythagoras(int num1, int num2, int num3) { return null ; } }
package question01; public class Pythagoras { //フィールド変数 int lineA; int lineB; int lineC; public Pythagoras(int lineA, int lineB, int lineC) { this.lineA=lineA; this.lineB=lineB; this.lineC=lineC; } public boolean isRightTrigangle() { lineA*=lineA; lineB*=lineB; lineC*=lineC; if(lineA+lineB==lineC || lineB+lineC ==lineA || lineC+lineA==lineB) { return true; }else { return false; } } public String toString() { return "["+isRightTrigangle()+"]"; } }
package question01; public class PythagorasException extends Exception{ //コンストラクタ 指定された詳細メッセージを持つ、新規例外を構築します。 PythagorasException(String message){ super(message); } }

現在の出力結果
1番目のデータ:[3,4,5][true]
2番目のデータ:[2,-2,1][false]
3番目のデータ:[2,2,3][false]
4番目のデータ:[5,3,4][true]
question01.PythagorasException: 0以下の数値は判定不可能
at question01.Question01.main(Question01.java:26)

このように、表示されてしまいます。また、getPythagoras()メソッドはなぜ必要なのでしょうか?

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

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

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

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

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

gentaro

2019/11/17 05:38

https://teratail.com/help/avoid-asking 「何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。」 > このように、表示されてしまいます。また、getPythagoras()メソッドはなぜ必要なのでしょうか? 問題を出した人に聞きましょう。
guest

回答1

0

ベストアンサー

まず、Pythagoras クラスのコンストラクターで引数に0以下の値があったら PythagorasException の new して throw しましょう。

Java

1 2public Pythagoras(int lineA, int lineB, int lineC) throws PythagorasException { 3 if (lineA<=0 || lineB<=0 || lineC<=0) { 4 throw new PythagorasException("0以下の数値は判定不可能"); 5 } 6 this.lineA=lineA; 7 this.lineB=lineB; 8 this.lineC=lineC; 9 }

今試しに書いてある try ~ catch の処理は削除します。

次に Question01 クラスの for文を次のように変えます。

Java

1for(int j=0; j<1; j++ 2 try { 3 Pythagoras pythagoras= new Pythagoras(nums[i][0], nums[i][1], nums[i][2]); 4 System.out.print("["+nums[i][0]+","+ nums[i][1]+","+nums[i][2]+"]"); 5 System.out.println(pythagoras); 6 count++; 7 } catch (PythagorasException e) { 8 System.out.println(e.getMessage()); 9 } 10} 11

getPythagorasメソッドをあなたがなぜ作ろうとしたのかがよくわかりませんが、もしこれが何らかの課題で与えられたテンプレートか何かであれば、出題者の意図はPythagoras クラスのインスタンス作成のためのメソッドにしたかったのでしょう。ただ、メソッド名がその意図には相応しくないので、そうとも限りません。普通そういうことって課題の説明なりに前提として明記されてありそうな点ですが。

投稿2019/11/17 05:39

編集2019/11/17 05:43
ironya

総合スコア454

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

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

退会済みユーザー

退会済みユーザー

2019/11/17 05:50

getPythagorasメソッドについては後日聞いてみようと思います。 わかりやすい回答ありがとうございました。安心して眠れます^0^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問