- 締切済み
配列の中で入れ換えをして逆順にする方法
配列の中で入れ換えをして逆順にする方法 大学の課題で出たもので、10個以下の数を読み込んで逆順に書くプログラムなんですけど 別の配列を宣言せずに配列の中身を入れ替えて逆順にする方法を教えてください ここに処理を入力 のところの配列の中身を逆転するプログラムはどうしたらいいんでしょうか? class Reverse { public static void main(String [] args){ int data[] = new int[10]; int i,x,kosuu; i=0; x=IO.in.readInt(); while(x >= 0){ if(i>=10) System.out.println("10個を越えたので無視する。"); else { data[i]=x; i++; } System.out.print("> "); x=IO.in.readInt(); } kosuu=i; ここに処理を入力 System.out.println("数列を逆順に書くと以下の通り。"); for(i=0;i<kosuu;i++){System.out.println(data[i]);} } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
こちらのURLが参考になります。
- nak777r
- ベストアンサー率36% (49/136)
入力された kosuu=10 の場合 tmp に data[0] の内容を入れて、 data[0] に data[9] の内容を入れて、 data[9] に tmp の内容を入れる。 で、data[0] と data[9] の中身が入れ替わる kosuu = 10 の時 データは、 data[0] から data[9] 迄ある訳だから 入替は、↓になる tmp = data[0]; data[0] = data[9]; data[9] = tmp; tmp = data[1]; data[1] = data[8]; data[8] = tmp; tmp = data[2]; data[2] = data[7]; data[7] = tmp; tmp = data[3]; data[3] = data[6]; data[6] = tmp; tmp = data[4]; data[4] = data[5]; data[5] = tmp; kosuu = 9 の時 データは、 data[0] から data[8] 迄ある訳だから 入替は、↓になる tmp = data[0]; data[0] = data[8]; data[8] = tmp; tmp = data[1]; data[1] = data[7]; data[7] = tmp; tmp = data[2]; data[2] = data[6]; data[6] = tmp; tmp = data[3]; data[3] = data[5]; data[5] = tmp; tmp = data[4]; data[4] = data[4]; data[4] = tmp; 最後の data[4] と data[4] の入替は意味が無い つまり、0→1→2 となる変数と つまり、9→8→7 となる変数があるとして 数値の大きさが、逆転する(又は=になる)迄 繰り返せば良い事がわかる