【3月6日実施】システムメンテナンス実施のお知らせ

”入力した値”番目の配列を削除するというプログラムを作成する課題で

static int[] remove_array(int[] x){
//何番目の値を消したいか聞く
Scanner stdIn = new Scanner(System.in);
System.out.println("何番目のデータを削除しますか?");
int y = stdIn.nextInt();


//消したい値が存在するか確認する
if(y<0||x.length<y) System.out.println("入力エラーです");


//消したい要素のみを取り除いて配列zに挿入する
int[]z=new int[x.length-1];
for(int i=0,j=0;i<x.length;i++){
if(i!=y) {
z[j]=x[i]; j++; //jは値を挿入した時にしか進まない
}
}
return z; //main関数に値を返却
}
public static void main(String[] args){


//配列aを作って表示する
int[]a=new int[]{37,19,87,-69,7,24,-56,0,-41,90};
for(int i=0;i<a.length;i++){
System.out.print(""+a[i]+"\t");
}
System.out.println(); //いったん改行しとく


//remove_arrayに配列aを値を送って,返り血を配列cに入れる
int[]c;
c=remove_array(a);


//remove_arrayの返り血を表示
for(int i=0;i<c.length;i++){
System.out.print(""+c[i]+"\t");
}
System.out.println(); //いったん改行しとく
}
}

以上のようにプログラムを考えたのですが,9行目で入力エラーが出た時点でプログラムを終了させる方法が思いつかず困っています.
わかる方,教えていただけると嬉しいです.

A 回答 (2件)

if(y<0||x.length<y) {


   System.out.println("入力エラーです");
   System.exit(1);
}
    • good
    • 0
この回答へのお礼

そんな簡単な方法があったのですね!
おかげで完成しました。ありがとうございます

お礼日時:2022/10/15 12:51

案1. 例外を投げる



if (条件) throw new Excetion("原因");
...
try{ c = 呼び出し(a); 処理(c); }
catch(Excetion e){ 報告(e.messge); }

案2. 無効値を返す

if (条件) { 報告("原因"); return null; }
...
c = 呼び出し(a);
if (c == null) return;

余談ではありますが、
返り血を扱うのは問題なのでIME履歴は健全に保ちましょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!