JAVAの練習問題でわからなくて困っています
以下は線形探索のプログラムで、このプログラムを改良して、
要素数が10の配列で、乱数0~9の値が重複しないようにする方法がわからなくて困っています。
以下のような簡単なプログラムでできる方法で行いたいです。
どなたか答えまたはヒントを下さい、お願いします。
------------------------------------------------------------
import java.util.Random;
import java.util.Scanner;
public static void main (String[] args) {
Random rand = new Random();
Scanner stdIn = new Scanner(System.in);
final int n = 10; //要素数
int[] a = new int[n]; //配列を宣言
for (int j = 0; j < n;)
a[j] = rand.nextInt(10);
System.out.print("配列aの全要素の値\n{ ");
for (int j = 0; j < n; j++)
System.out.print(a[j] + " ");
System.out.println("}");
System.out.print("探す数値 : ");
int key = stdIn.nextInt();
int i;
for (i = 0; i < n; i++)
if (a[i] == key)
break;
if (i < n) //探索成功
System.out.println("それはa[" + i + "]にあります。");
else //探索失敗
System.out.println("それはありません。");
}
}
No.1ベストアンサー
- 回答日時:
えぇと, 「0~9 の値が重複しないようにする」ということ? だとしたら, 最初に 0~9 の値を入れておいて, ランダムに交換するというのが簡単ですね.
for (i=0; i < 10; ++i) a[i] = i;
for (i = 10; i > 1; --i) {
int r = rand.nextInt(i);
int t = a[r];
a[r] = a[i];
a[i] = t;
}
という感じ, かな?
この回答への補足
最初に値を入れて、ランダムに交換する方法があるのですか!
for (int i = 0; i < 10; ++i)
a[i] = i;
for (int i = 10; i > 1; --i) {
int r = rand.nextInt(i);
int t = a[r];
a[r] = a[i];
a[i] = t;}
試してみましたが、a[r] = a[i]; でコンパイルエラーしてしまいます。
自分で解決できました。線形探索のプログラムを利用したらうまくできました。
for (int i = 0; i < n; i++) {
a[i] = rand.nextInt(10);
int x = a[i];
for (i = 0; i < n; i++)
if (a[i] == x)
break;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
Java、2の0乗~10乗の表示
-
コマンドライン引数の例外処理...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
countに実行した回数をいれたい...
-
for文を使った累乗の計算方法に...
-
7つ数字を表示したら改行すると...
-
九九の表
-
階乗の式
-
Ctrl+Zが入力されると終了する...
-
Randomメソッドの確率設定
-
繰り返しによる星印の出力
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
javaのエラーが回収できない
-
エラー(互換性の無い型)
-
java 配列
-
JAVAのfor文で困っています。
-
テキストボックスに入力された...
-
javaで素数判断プログラム作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
数値⇒漢数字変換 java
-
論理演算子”||”またはの入力方法
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Java 入力した整数値の合計を、...
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
Randomメソッドの確率設定
-
Ctrl+Zが入力されると終了する...
-
学校で課題を出されて困ってい...
-
Java キーボードから負の数が入...
-
キーボードから10人分の点数を...
-
階乗の式
-
Java 配列<選挙>
おすすめ情報