javaでヒットアンドブローのプログラム描いてます。
大学の単位に関わるので教えて頂きたいです!
課題の条件として、以下の方法で重複しない4桁の数字を生成することが必要です。
- 10個の配列に0~9までをいれる
- 0~9までの乱数で1の位の数字を決める
- 決めた数字を配列の初めの数字と入れ替える
- 1~9までの乱数で10の位の数字にする
- 決めた数字を配列の2番目の数字と入れ替える
- 2~9までの乱数で100の位の数字にする
- 決めた数字を配列の3番目の数字と入れ替える
- 3~9までの乱数で1000の位の数字にする
いろいろ調べてはみたものの、どのサイトを見ても、同じ方法でやっている物はないように見えたので、質問させて頂きました。
こんな感じで作ったのですが、重複してしまいます。
//10個の配列を作る int [] ans = {0,1,2,3,4,5,6,7,8,9}; String [] name = {"0","1","2","3","4","5","6","7","8","9"}; //千の位を持ってくる。 Random rand1 = new Random (); int sen = rand1.nextInt(9); int a = ans[sen]; //交換 ans[sen]= ans[0]; ans[0] = a; //1から9のansを取り出す int [] ans2 = new int [9]; System.arraycopy(ans,1, ans2,0,9); //百の位を持ってくる。 Random rand2 = new Random (); int hyaku = rand2.nextInt(8); int b = ans2[hyaku]; //交換 ans2[hyaku]= ans2[0]; ans2[0] = b; //2から9のansを取り出す int [] ans3 = new int [8]; System.arraycopy(ans2,1, ans3,0,8); //十の位を持ってくる。 Random rand3 = new Random (); int zyuu = rand3.nextInt(7); int c = ans3[zyuu]; //交換 ans3[zyuu]= ans3[0]; ans3[0] = c; //3から9のansを取り出す int [] ans4 = new int [7]; System.arraycopy(ans3,1, ans4,0,7); //一の位を持ってくる。 Random rand4 = new Random (); int iti = rand4.nextInt(6); int d = ans4[iti]; //交換 ans[iti]= ans4[0]; ans4[0] = d; //4桁持ってくる System.out.println(ans[sen]+""+ans2[hyaku]+""+ans3[zyuu]+""+ans4[iti]);
よろしくお願い申し上げます。。
コードは, 入力枠の上辺にある <code> を押すと出てくる ``` の間の "コード" という文字列を置き換える形で記入(コピペ)してください.
その際, "ここに言語を入力"という文字列を "java" に置き換えますと, java 言語のキーワード等のフォントが変わる等して見易くなります.
また, コードは実行できる状態で記述してください. 省略されますと, 回答側で実行するために追加したコードによっては, 再現しない場合があります.
なお, 「単位に関わる」からと急かされても回答側には関係ないことはご留意頂いたほうが宜しいかと思います.
> どのサイトを見ても、同じ方法でやっている物はないように見えた
コードの書き方は人それぞれです. 同じ授業を受けた同じレベルの方が同じ課題をやっても同じ方法となるとは限りません.
だからこそ, ただコードを書くだけでなく, 人のコードを読んで理解することもまたプログラミングには必要と思います.
ご指摘頂き有り難うございます。
teratailの使い方等未熟な部分が多くあり、ご迷惑をお掛けして申し訳ありません。
また、私の事情や浅学さについての客観的なご意見も頂き有り難うございます。
今後、質問等させて頂く際に参考にさせて頂きます。
この度は誠にありがとうございました。
ご回答頂いた皆様、本当に有り難うございます。
皆様のご意見を比較しながら、頑張ってみようと思います。
この度は誠にありがとうございました。
回答5件
あなたの回答
tips
プレビュー