前提・実現したいこと
配列を昇順、降順に並び替えて表示をする。
(Java API のArraysやCollectionsは使いません。)
arraysSortは二つの引数を持つメソッドです。一つは配列。二つ目はboolean。二つ目の引数がtrueなら昇順、falseなら降順です。
displayは配列を表示するメソッド。
changeは配列の中身を入れ替えるメソッド。
arraysSortのなかでchangeは使われる。
発生している問題・エラーメッセージ
順番に並び変わっていません。
エラーメッセージ
該当のソースコード
java
1public class Main5_7 {//1 2 3 public static void main(String[] args){//2 4 int[] arrays1= {96,45,31,29,84,77}; 5 display(arrays1, false); 6 arraySort(arrays1, true); 7 display(arrays1, true); 8 arraySort(arrays1, false); 9 display(arrays1, true); 10 } 11 public static void arraySort(int[] array, boolean orderType) { 12 //3 13 boolean a = true; 14 if(orderType) {//4 15 while(a) { 16 for(int i=0 ; i<array.length-1 ; i++) { 17 a=false; 18 if(array[i]>array[i+1]) { 19 a=true; 20 change(array, i, i+1); 21// int temp= array[i]; 22// array[i]=array[i+1]; 23// array[i+1]=temp; 24 } 25 } 26 } 27 28 } else { 29 while(a) { 30 for(int i=0 ; i<array.length-1 ; i++) { 31 a=false; 32 if(array[i]<array[i+1]) { 33 a=true; 34 change(array, i, i+1); 35 } 36 } 37 } 38 }//4 39 }//3 40 public static void display(int[] array, boolean isSorted) { 41 if(isSorted) { 42 System.out.println("配列は整えられています。"); 43 } else { 44 System.out.println("配列は整えられていません。"); 45 } 46 for(int value : array) { 47 System.out.println(value); 48 }//3 49 } 50 public static void change(int[] array,int i, int j) { 51 int temp; 52 temp = array[i]; 53 array[i] = array[j]; 54 array[j]= temp; 55 } 56 57 58} 59
bash
1配列は整えられていません。 296 345 431 529 684 777 8配列は整えられています。 931 1029 1145 1277 1384 1496 15配列は整えられています。 1645 1777 1884 1996 2031 2129
補足情報(FW/ツールのバージョンなど)
Java version 16.0.1
Eclipse
Mac OS Big Surの環境です。
java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
MacBook:09_MinutesToYearsandDayCalculator $
パソコン MacBook(Retina, 12-inch,2017), memory 8GB