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

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

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

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

Q&A

解決済

5回答

2034閲覧

[Java]0~10までの乱数を重複なしで表示したい。また0が出力されると処理を終了する。

kwskyshr825

総合スコア9

Java

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

0グッド

0クリップ

投稿2019/07/29 06:35

編集2019/07/29 06:48

下記のような処理をしたい。

Java

10~10までの乱数を重複なしで表示したい。 2また0が出力されると処理を終了する。

現在の記述中(エラー)のプログラム

Java

1package problemex5; 2import java.util.ArrayList; 3 4public class Problemex5_1 { 5 6 public static void main(String[] args) { 7 ArrayList al = new ArrayList(); 8 for( int i = 0 ; i < 11 ; i ++) 9 al.add ( new rand ( i ) ); 10 11 for(int i = 0; i < al.size() ; i++){ 12 rand s = (rand)al.get(i); // i番目のオブジェクトを取得 13 System.out.println("番号:" + s.getNumber()); 14 } 15 } 16}

Java

1package problemex5; 2 3public class rand { 4 // 番号 5 private int number; 6 // コンストラクタ 7 public rand(int number){ 8 this.number = number; 9 } 10 // 番号の取得 11 public int getNumber(){ 12 return number; 13 } 14}

現在の記述中のエラー

乱数表示されない。

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

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

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

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

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

m.ts10806

2019/07/29 06:37

>問題をときたい 「自分でやりましょう」という指摘がつくと思いますのでがんばってください。
m.ts10806

2019/07/29 06:43

> new rand ( i ) これ、そもそもどこに定義されているのでしょうか。Randomなら分かりますが。randとは?
LouiS0616

2019/07/29 07:06

乱数を自前で実装しなければならないのですか?
guest

回答5

0

Collectionのshuffleを使うと楽かと思います。
もしよかったらどうぞー!

import java.util.Collections; import java.util.ArrayList; public class Problemex5_1 { public static void main(String[] args) { ArrayList<Integer> al = new ArrayList<Integer>(); for(int i = 0 ; i < 11 ; i++) { al.add(i); } Collections.shuffle(al); System.out.println(al); } }

投稿2019/07/29 07:05

kiddayo

総合スコア240

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

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

kwskyshr825

2019/07/29 07:36

package problemex5; import java.util.ArrayList; import java.util.Collections; public class Problemex5_1 { public static void main(String[] args) { int i , j; ArrayList<Integer> list = new ArrayList<Integer>(); // listに値を入れる。この段階では昇順 for( i = 0 ; i <= 10 ; i++) { list.add(i); } // シャッフルして、順番を変える Collections.shuffle(list); // シャッフルした結果を表示させる // System.out.println(list); for( i = 0 ; i <= 10 ; i ++ ) { System.out.println( "0~10の値を出力:" + list . get ( i ) ); if( list . get ( i ) == 0 ) break; } } }
guest

0

回答にあるコードを少し書き換えてみました。

java

1package teratail; 2 3import java.util.ArrayList; 4import java.util.Collections; 5import java.util.List; 6 7public class Problemex5_1 { 8 static final int SIZE = 10; 9 10 public static void main(String[] args) { 11 List<Integer> list = new ArrayList<Integer>(); 12 List<List<Integer>> odd_even = new ArrayList<List<Integer>>(2); 13 odd_even.add(new ArrayList<Integer>()); 14 odd_even.add(new ArrayList<Integer>()); 15 16 for (int i = 0; i < SIZE; i++) { 17 list.add(i); 18 } 19 Collections.shuffle(list); 20 21 for (int v : list) { 22 System.out.println("0~" + (list.size() - 1) + "の値を出力:" + v); 23 if (v == 0) { 24 break; 25 } 26 odd_even.get(v % 2).add(v); 27 } 28 System.out.println("偶数:" + odd_even.get(0)); 29 System.out.println("奇数:" + odd_even.get(1)); 30 } 31}

投稿2019/07/29 13:32

katoy

総合スコア22324

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

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

0

初投稿でドギマギの部分もあったかと思いますが
ありがとうございました。

投稿2019/07/29 09:00

kwskyshr825

総合スコア9

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

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

0

package problemex5;
import java.util.ArrayList;
import java.util.Collections;

public class Problemex5_1 {
public static void main(String[] args) {
int i ;
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();

// listに値を入れる。この段階では昇順 for( i = 0 ; i <= 10 ; i++) { list.add(i); } // シャッフルして、順番を変える Collections.shuffle(list); // シャッフルした結果を表示させる

// System.out.println(list);
for( i = 0 ; i <= 10 ; i ++ ) {
System.out.println( "0~10の値を出力:" + list . get ( i ) );
int j = i;
if( list . get ( i ) == 0 ) {

for(i = 0; i <=j; i ++) { if ( list . get ( i ) %2 == 0 ) { list1.add(list . get ( i )); } else if ( list . get ( i ) %2 == 1 ) { list2.add(list . get ( i )); } } break; } } System.out.println("偶数:"+list1); System.out.println("奇数:"+list2);

}
}

投稿2019/07/29 08:59

kwskyshr825

総合スコア9

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

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

0

ベストアンサー

「JAVA 乱数」でぐぐると乱数の発生させ方が出てきます
まずは0から10の乱数を出すことから始めましょう

投稿2019/07/29 06:43

y_waiwai

総合スコア87747

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問