はじめまして。私はJAVAの初学者です。
配列の学習をする中でバブルソートの問題を解いているところなのですが、あと少しのところで正しく出力できず困っています。
与えられた数を昇順に並び替えるというものです。
僭越ながら、ご教授いただけると幸いです。
よろしくお願いいたします。
JAVA
1public class Main{ 2 public static void main(String[] args){ 3 int[] a ={5,3,2,9,0}; 4 for(int i= 0;i<a.length-1;i++){ 5 for(intj=a.length-1;j>i;j++){ 6 7 if(a[j]>a[j+1]){ 8 int tmp = a[i]; 9 a[i]=a[j]; 10 a[j]=tmp; 11 } 12 } 13 } 14 for(int i:a){ 15 System.out.println(i); 16 17 } 18 } 19} 20
まずfor文のintとjを繋いで書いてますが、
これだとそもそもコンパイルエラーになってしまうので離して書いてください。
そしてjをカウンターとして回すfor文でjの初期値がaの配列サイズ5-1で4となってますが、
すぐ下のif文でこのjに1加算して5でa配列にアクセスしようとしてエラーとなっていますね。
またjをインクリメントしてるのもすぐサイズ超過になってしまうので、
恐らくデクリメントしていくのが正しいかと思います。
yurieghost様、分かりやすい解説をありがとうございました。
6行目を書き換えればよかったのですね。お陰様で解決しました。感涙です!
6行目だけではないでしょう。
質問を編集して、解決したコードを追加していただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー