建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同
阿新 • • 發佈:2020-11-26
題目:建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同
方法一:
/* * 面試題目:建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同 */ public class Random { public static void main(String[] args) { int[] arr = new int[6]; for (int i = 0; i < arr.length; i++) { //@1 //宣告6個30範圍內的隨機數,因為random()*30取不到30,所以+1 arr[i] = (int) (Math.random() * 30) + 1; //宣告一個布林型變數來標記是否出現當前數與之前的數相等的情況 //若相等標記由true變為false boolean flag = true; while (true) { //@2 //對比i號數之前是否有與i相等的數,若相等,將標記改為false //同時用break跳出@3迴圈,因為i號前面的數經過前面的比對 //已經確保不相等,所以在發現與i號相等的數時直接跳出 for (int j = 0; j < i; j++) { //@3 if (arr[i] == arr[j]) { flag = false; break; } } //如果flag = false;那麼重新為arr[i]賦一個隨機數且將flag設定為true //continue則使程式重新回到@2進行比較 //來驗證新生成的arr[i]與之前的數是否相同 if (!flag) { arr[i] = (int) (Math.random() * 30) + 1; flag = true; continue; } break; } } for (int k = 0; k < arr.length; k++) { System.out.print(arr[k] + " "); } } }
方法二
package com.dahongcui.java; //建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同 public class RandomImprove { public static void main(String[] args) { int[] arr = new int[6]; for(int i = 0;i < arr.length;i++) { arr[i] = (int) (Math.random() * 30) + 1; for(int j = 0;j < i;j++) { if(arr[i] == arr[j]) { i--; break; } } } for(int i = 0;i < arr.length;i++) { System.out.println(arr[i]); } } }