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

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

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

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

Q&A

2回答

18452閲覧

Javaでfor文を使ったソート方法(昇順に表示)

sui1341398

総合スコア13

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

0グッド

0クリップ

投稿2019/02/11 04:38

編集2022/01/12 10:55

Javaでint[]型を使って宣言した複数の数字を、二重ループのfor文と、swapを使って昇順にソートし表示するプログラムを作っています。
間違ってはないはずなのですが、53行目のSysten.out.ptint(sortAsc[i] + ", ");でソート後の値を表示しようとすると、

 ■ソート後の配列 sortAsc の中身
7, 9, 10, 15, 16, 28,

となり、なぜか ”30” が表示されません。
何処が間違っているか教えてください。
よろしくお願いいたします。

コード public static void main(String[] args) { // int[]型の変数 sortAsc を作成する int[] sortAsc = {15, 7, 10, 9, 16, 30, 28}; System.out.println("■ソート前の配列 sortAsc の中身"); // 配列 sortAsc の値を表示する(ソート前) for (int i = 0; i < sortAsc.length; i++) { System.out.print(sortAsc[i] + ", "); } // 改行 System.out.println(""); System.out.println(""); System.out.println("■ソート後の配列 sortAsc の中身"); // 配列 sortAsk の各要素を昇順にソートする // ソート基準点のループ for (int i = 0; i < sortAsc.length - 1; i++) { for (int j = i; j < sortAsc.length; j++) { // sortAsc[i] が sortAsc[j]より大きい場合 if (sortAsc[i] >= sortAsc[j]) { // 値を交換 int swap = sortAsc[i]; sortAsc[i] = sortAsc[j]; sortAsc[j] = swap; } } // 配列 sortAsc の全要素の値を表示する(ソート後) System.out.print(sortAsc[i] + ", "); } }

実行結果

■ソート前の配列 sortAsc の中身
15, 7, 10, 9, 16, 30, 28,

■ソート後の配列 sortAsc の中身
7, 9, 10, 15, 16, 28,

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

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

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

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

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

miyabi-sun

2019/02/11 04:42

JavaとJavaScriptはインドとインドネシアくらい違うのでタグから外しておいてくださいね。 インドに観光に来てて「インドでもインドネシアでも良いんで観光名所教えてください」とか言ってるのと同じレベルになってますね。
sui1341398

2019/02/11 04:45

申し訳ございません。 よくわかっていませんでした。 修正しておきます。ありがとうございます。
guest

回答2

0

ソート後の配列を表示させようとしているSystem.out.print(sortAsc[i] + ", ");の位置をよく見てください。

i0から始まって、いくつで終わるでしょう。

投稿2019/02/11 05:15

kts_h

総合スコア207

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

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

stdio

2019/02/11 05:37

なにソートか忘れたけど、一番単純なソートでミスるとは 今後が心配になりますね...
guest

0

ソート前の配列は
for (int i = 0; i < sortAsc.length; i++) {
の回数分、表示しているのに
ソート後の配列は
for (int i = 0; i < sortAsc.length - 1; i++) {
の回数分、表示しているためです。

入替用ループを抜けた後に、最後の一つを表示するようにする、もしくは
入替用ループ中の表示を無くして、ループ後にソート前と同じように表示してみましょう。

入替処理そのものについてはスルーの方向で。

投稿2019/02/11 05:10

torisan

総合スコア678

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問