前提
ここに質問の内容を詳しく書いてください。
(例)
Javaでシステムを作っています
実現したいこと
整数を5つ入力してそれらを昇順に並べ替えて、
並び替えの結果と最大値、最小値を表示するようにしたいです。sortは使いたくないです。
発生している問題・エラーメッセージ
表示されるのは4番目に入力した数字を5回繰り返したものになってしまうんです。
該当のソースコード
java
1import java.util.*; 2import java.util.Arrays; 3import java.util.List; 4import java.util.Scanner; 5import java.io.InputStreamReader; 6import java.io.BufferedReader; 7import java.io.IOException; 8import java.util.Collections; 9 10 11 12public class Setsumon7 { 13 public static void main (String[] args) { 14 15 InputStreamReader isr = new InputStreamReader(System.in); 16 BufferedReader br = new BufferedReader(isr); 17 18 System.out.println("整数を昇順で並び替えます。"); 19 System.out.println("5個の整数を入力して下さい。"); 20 21 int[] suuretsu; 22 suuretsu = new int[5]; 23 24 int wk = 0; 25 26 for ( int i = 0; i < suuretsu.length; i++){ 27 28 System.out.print(i+1); 29 System.out.print("個目の整数:"); 30 Scanner scanner = new Scanner(System.in); 31 suuretsu[0+i] = scanner.nextInt(); 32 33 /*System.out.println(Arrays.toString(suuretsu)); 34 System.out.print("個目の整数:");*/ 35 for ( int j = suuretsu.length-1 ; j > i ; j-- ) { 36 37 if ( suuretsu[j - 1] >= suuretsu[j]) { 38 39 wk = suuretsu[j - 1]; 40 suuretsu[j - 1] = suuretsu[j]; 41 suuretsu[j] = wk; 42 } 43 } 44 } 45 46 System.out.println("昇順並び替え"); 47 for ( int i = 0; i < 5; i++){ 48 49 System.out.print(wk); 50 51 52 } 53 } 54} 55
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
デバッグ実行で「入力した情報が正しく来ているか」の確認はされましたか?
また、1つずつ入力を受け付けるとしても、forの中で受け付けつつforというのはかなり非効率になりそうです。
現状だと1回につき必ず5回回っていますし、nullとなっているデータもあるでしょうし。
全て受け付けてから並べ替えるのではダメなのでしょうか。
>整数を並べ替えるシステムを作りたい
システムというのは大体が複数の要素(それぞれがさらに複数の要素から成る)の組み合わせで作られる(どちらかというと)規模の大き目なモノを言います。
本件のように数値を並び替えるだけ(失礼)の単体プログラムを「システム」と呼称すると、本職には分かり難い説明となります。単に「プログラム」で良いように思います。
>表示されるのは4番目に入力した数字を5回繰り返したもの
どのような値を入力してそう表示されたのでしょうか。また、どのようなパターンの値を入力しても必ず 4 番目が表示されるでしょうか。
回答2件
あなたの回答
tips
プレビュー