//以下の問題がわかりません。教えていただけると幸いです。
//以下のプログラムのメソッドreveseに対して、仮引数aに受け取った参照値がから参照であった場合に
//何らかの処理をおこうな応用に変更したプログラムを作成せよ
//※NullPointerExceptionを捕捉して対処すること。
import java.util.Scanner;
class ReverseArray4{
//配列の要素a[idx1]とa[idx2]を交換
static void swap(int[]a, int idx1, int idx2){
int t = a[idx1];
a[idx1] =a[idx2];
a[idx2] = t;
}
static void reverse(int[]a){
try{
for(int i = 0; i< a.length/2; i++)
swap(a, i, a.length-i);
}catch(ArrayIndexOutOfBoundsException e){
throw new RuntimeException("reverseのバグ?",e);
}
}
public static void main (String[]args){
Scanner stdIn = new Scanner(System.in);
System.out.print("要素数:");
int num = stdIn.nextInt();
int[]x = new int[num];
for(int i = 0; i<num; i++){
System.out.print("x["+i+"]:");
x[i] = stdIn.nextInt();
}
try{
reverse(x);
System.out.println("要素の並びを反転しました。");
for(int i = 0; i<num; i++)
System.out.println("x["+i+"]:");
}catch (RuntimeException e){
System.out.println("例外 :"+e);
System.out.println("例外の原因:"+e.getCause());
}
}
}
No.1ベストアンサー
- 回答日時:
個人的には、関数の冒頭にて null チェックを行うのが筋だと思うのですが、
NullPointerException を捕捉しろ、と指定があるならば catch 文を追加しましょう
// catch 文の書き方
try {
例外 FooException が起きるかもしれない処理
例外 BarException が起きるかもしれない処理
} catch (FooException fex) {
throw new RuntimeException("foo!",e);
} catch (BarException bex) {
throw new RuntimeException("bar!",e);
}
No.2
- 回答日時:
不明瞭な質問ですが・・・
「から参照」って 要素数0の配列への参照?
もしそうなら、確かに死ぬので、reverseの冒頭に
if (a.length ==0) return;
が必要でしょうね。
それとも null の話なのかな?
NullPointerExcptionをmainで個別に処理したいという話なら
mainのcatchを分けるだけだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
ループ処理の際、最後だけ","を...
-
2つのスクロールバーを連動させ...
-
Ctrl+Zが入力されると終了する...
-
数値⇒漢数字変換 java
-
テキストボックスに入力された...
-
Randomメソッドの確率設定
-
総称型ArrayList<E>への参照...
-
配列を逆順させて表示させる方...
-
リトルエンディアン→ビッグエン...
-
Java キーボードから負の数が入...
-
論理演算子”||”またはの入力方法
-
Java 入力した整数値の合計を、...
-
繰り返しによる星印の出力
-
(急いでいます)Javaで3回間違...
-
要素数が10の配列で、乱数0~9...
-
入力データ数を入力して、その...
-
countに実行した回数をいれたい...
-
javaです。 途中まで出来ている...
-
画面出力の際の繰り返しと入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
Ctrl+Zが入力されると終了する...
-
数値⇒漢数字変換 java
-
JAVAのfor文で困っています。
-
2つのスクロールバーを連動させ...
-
countに実行した回数をいれたい...
-
7つ数字を表示したら改行すると...
-
Randomメソッドの確率設定
-
総称型ArrayList<E>への参照...
-
コマンドライン引数の例外処理...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
Java キーボードから負の数が入...
-
繰り返しによる星印の出力
-
エラー(互換性の無い型)
-
javaのエラーが回収できない
おすすめ情報