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

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

新規登録して質問してみよう
ただいま回答率
85.50%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

1回答

1291閲覧

java 任意の数を入力しソート前の乱数とソート済み乱数を出力するプログラム

samanaka

総合スコア4

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

0クリップ

投稿2020/10/27 12:22

編集2020/10/27 12:43

任意の数を入力するとその数だけ乱数が出力され、さらにそれをソートして昇順に並べ替えるプログラムを組みたいです。例えば100と入力したら100個の乱数が出力され、さらに昇順に並べ替えるというものです。
出力の際、数値が10個横並びしたら改行していくという仕様も追加したいです。どのようなコードに改良すればよいでしょうか?現段階として、任意の数の乱数を出力することはできています。

該当コード

Java

1import java.util.Scanner; 2import java.util.Random; 3public class Test13 { 4 public static void main( String[] args ) { 5 Scanner sc = new Scanner(System.in); 6 Random rd = new Random(); 7 8 9 System.out.print("データ生成数: "); 10 int data1 = sc.nextInt(); 11 12 13 14 for(int j = 0;j < data1;j++){ 15 int data2 = rd.nextInt(data1) + 1; 16 System.out.print(" "); 17 18 //String s = String.valueOf(data2); 19 20 if(data2 < 10) 21 System.out.print(" "); 22 System.out.print(data2); 23 } 24 System.out.println(); 25 26 27 28 } 29} 30 31

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

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

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

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

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

ebal

2020/10/27 12:37

# 仕様について 仕様がおそらく誤解を生む表現となっています. ほしいものはおそらく 数字1 数字2 ... 数字10 数字11 ... 数字20 ... 数字100 のように並んだものだろうと解釈していますが,現状の表現は一度コンソールに出力しそれをフラッシュしてから並べ替えたものを表示する,あるいは並べ替える様子をアニメーションするように読めます. どんなデータがほしいかは言葉だけでなく例も示してください. # コードについて コードは適切にインデントした上でMarkdownのコード機能を用いて記載してほしいです. 特に適切なインデントが施されていないされていないコードは非常に認知不可が高いので回答率を下げる原因となります. # 質問について わからないところを明確にしてください. 現状の質問では丸投げの質問と扱うしかありません. どのような資料を読み,目的に対してなにをしたのか,その上でなにがわからないかを記載してください. 例えば昇順に並べ替えるところがわからない.あるいは10個ずつ並べる方法がわからない,といったようにわからないところはより詳細に書いてほしいです.
dodox86

2020/10/27 12:43

丸投げの印象は私も抱きました。 > どのようなコードに改良すればよいでしょうか? まずもって最初にそれを考えるのは質問者さんの役目なのでは。
samanaka

2020/10/27 12:49

細かく指摘してくださりありがとうございます。 コードの修正しました。 確かに丸投げにしか見えませんね。申し訳ございません。 10個ずつ並べるやり方がわからないので教えていただけるとありがたいです。 n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 ........ ...n100 このような形で乱数を出力したいです。よろしくお願いいたします。
ebal

2020/10/27 12:55

n1...n100は昇順ソートされたものという認識で合っていますか?
samanaka

2020/10/27 12:57

何度もわかりづらくてすみません。 ソートはまだされていないものとして扱ってください。
ebal

2020/10/27 13:01

つまりあとでソートしてまた表示する,ということでしょうか?
dodox86

2020/10/27 13:01

ちなみにteratailでも過去、似たような乱数生成に関する質問が何度もされています。トップページから「乱数」などと検索すると色々参考になる質問回答が得られると思います。 雑に考えると「乱数生成。次の乱数生成。これまでに生成した乱数と重複しないかをチェックし、重複していれば再生成。」を繰り返せばいずれ出来上がります。ですがこれは明らかに無駄があるので、よりよい効率的な方法も色々挙げられています。
samanaka

2020/10/27 13:09

ebalさん そういうことになります。 dodobox86さん 助言ありがとうございます。自分が指定された仕様に近いものがあったら参考にしようと思います。
samanaka

2020/10/27 13:10

dodox86さんですね。お名前間違ってしまいすみません。
dodox86

2020/10/27 13:11

よく間違われるのでだいじょうぶです。
samanaka

2020/10/27 13:57

後から申し訳ございません。重複は無視してもらって構いません
guest

回答1

0

ベストアンサー

入力する数は乱数の個数ですよね。
それは発生させる乱数の範囲に関係するんですか?
例えば、6 と入力したら、1~6 の範囲の乱数にするんですか?
72 5 67 35 4 56 のように 6個の乱数ではいけないんですか?

それから、発生した乱数はどこかに保存しておかないとソートできませんよ。

10個以上の数を 1行10個ずつ表示する例を2通り示します。

Java

1class Test { 2 public static void main(String[] args) { 3 int[] a = { 4 77, 85, 74, 10, 46, 81, 44, 95, 28, 33, 20, 14, 4, 5 72, 5, 67, 35, 4, 56, 14, 36, 100, 78, 39, 47, 89 6 }; 7 for (int i = 0; i < a.length; i++) { 8 System.out.print(" " + a[i]); 9 if (i % 10 == 9) System.out.println(); 10 } 11 if (a.length % 10 > 0) System.out.println(); 12 13 System.out.println("---"); 14 15 int n = 0; // 1行に出力したデータの個数 16 for (int i = 0; i < a.length; i++) { 17 System.out.print(" " + a[i]); 18 if (++n == 10) { // 10個出力したら 19 System.out.println(); // 改行し 20 n = 0; // 次の行の出力個数をリセット 21 } 22 } 23 if (n > 0) System.out.println(); 24 } 25}

投稿2020/10/27 14:22

kazuma-s

総合スコア8224

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

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

samanaka

2020/10/27 14:27

10個表示のやり方を教えていただきありがとうございます。 6と入力したら、1~6の範囲で6個の乱数が出力されるようにする、という仕様です。わかりづらくてすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問