質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

823閲覧

整数を並べ替えるシステムを作りたい

alex_waybad

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2022/09/29 05:29

前提

ここに質問の内容を詳しく書いてください。
(例)
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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

neko_the_shadow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/09/29 05:50 編集

デバッグ実行で「入力した情報が正しく来ているか」の確認はされましたか? また、1つずつ入力を受け付けるとしても、forの中で受け付けつつforというのはかなり非効率になりそうです。 現状だと1回につき必ず5回回っていますし、nullとなっているデータもあるでしょうし。 全て受け付けてから並べ替えるのではダメなのでしょうか。
jimbe

2022/09/29 06:44 編集

>整数を並べ替えるシステムを作りたい システムというのは大体が複数の要素(それぞれがさらに複数の要素から成る)の組み合わせで作られる(どちらかというと)規模の大き目なモノを言います。 本件のように数値を並び替えるだけ(失礼)の単体プログラムを「システム」と呼称すると、本職には分かり難い説明となります。単に「プログラム」で良いように思います。 >表示されるのは4番目に入力した数字を5回繰り返したもの どのような値を入力してそう表示されたのでしょうか。また、どのようなパターンの値を入力しても必ず 4 番目が表示されるでしょうか。
guest

回答2

0

「ソート アルゴリズム」などで調べればいいのでは。
選択ソート、バブルソート、クイックソートなど、色々ありますよ。

投稿2022/10/01 00:34

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Scanner scanner = new Scanner(System.in); は forループの前で 1回だけ実行する。
次の 2行は明らかに修正が必要です。

diff

1- for ( int j = suuretsu.length-1 ; j > i ; j-- ) { 2+ for (int j = i; j > 0; j--) { 3 4- System.out.print(wk); 5+ System.out.print(suuretsu[i]);

作りたいのは、システムではなく、プログラムですね。

投稿2022/09/29 06:41

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問