1. 程式人生 > 實用技巧 >建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同

建立一個長度為6的int型陣列,要求取值為1-30,同時元素值各不相同

題目:建立一個長度為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]);
		}
	}
}