Guest User

Untitled

a guest
Oct 16th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. package jp.ac.ca.data.create;
  2.  
  3. /**
  4. *
  5. * @author nuki ここではヒットアンドブローのための ランダムな被りのない4桁の数字を生成するクラス作成する。
  6. *
  7. */
  8. public class CreateRandomNumber {
  9. /*
  10. * 乱数の桁数を定数として宣言
  11. *
  12. * 他のクラスから見る必要がないのでアクセス修飾子はprivateに設定 他のメソッドなどでオーバーライドされたくもないのでprivateが適当と判断
  13. * 4桁というのは変わらないので定数で宣言
  14. */
  15. private static final int FINAL_NUMBER = 4;
  16.  
  17. // このメソッドが外のクラスから呼べないと困るのでアクセス修飾子はpublic
  18. // インスタンスメソッドではなく、クラスメソッドとして作成したためstaticとしている
  19. // 戻り値は配列なので配列を指定する
  20. // 乱数生成に引数を受け取る必要はないので空引数
  21. public static int[] RandomNumber() {
  22. // 乱数を生成する
  23. // int 型の配列arrという変数名を宣言
  24. int[] arr;
  25. // 配列の要素数を指定して配列を生成
  26. arr = new int[FINAL_NUMBER];
  27. // 配列の添字を0から順に乱数を代入する
  28. for (int i = 0; i < FINAL_NUMBER; i++) {
  29. // Mathクラスのrandomメソッドを用いて0.0〜0.9の乱数を生成し、1を足すことで整数にする。
  30. // 整数なのでdouble型ではなくint型にキャストする
  31. arr[i] = (int) (Math.random() * 9) + 1;
  32. // 添字1〜3は前の数値とかぶっていないかの確認
  33. if (i > 0) {
  34. // arr[i]の要素をn < i の間の添字の配列要素と被っていないかの確認
  35. for (int n = 0; n < i; n++) {
  36. // 26行目で生成した乱数がその前の添字の配列要素と同じでないか確認
  37. if (arr[i] == arr[n]) {
  38. // iをデクリメントし28行目のfor文で同じ添字の配列要素をもう一度生成する
  39. i--;
  40. break;
  41. }
  42. }
  43.  
  44. }
  45. }
  46.  
  47. return arr;
  48. }
  49. }
Add Comment
Please, Sign In to add comment