36.輸出指定數組中未被寫入的自然數

編程題目:

36.現有1~100共一百個自然數,已隨機放入一個有98個元素的數組a[98]。要求寫出一個儘量簡單的方案,找出沒有被放入數組的那2個數,並在屏幕上打印這2個數。

示例代碼:

package program.calculation.exercise36;

/**
 * 36.現有1~100共一百個自然數,已隨機放入一個有98個元素的數組a[98]。
 *	要求寫出一個儘量簡單的方案,找出沒有被放入數組的那2個數,並在屏幕上打印這2個數。
 *
 */

public class SelectNoArray {
	public static void main(String[] args) {
		
		int[] a = new int[98];
		int[] num = new int[100];
		
		//產生1~100共100個自然數
		for(int i=0;i<num.length;i++){
			num[i] = i + 1;
		}
		
		//將產生的100個自然數隨機放入數組中
		//方法 :在隨機插入的過程中把插入的全置爲0,剩下的就是沒插入的
		for(int i=0;i<a.length;i++){
			while(true){
				int index = (int) (Math.random()*100);//隨機獲取自然數數組的下標
				if(num[index] != 0){
					//a[i] = index+1; //將自然數放入數組中,注意:自然數從1開始到100結束,所以下標+1
					a[i] = num[index];//或者
					num[index] = 0; //將取過的自然數全賦值爲0,以保證不重複
					break;
				}
			}
		} 
		
		//輸出放入數組的98個數
		System.out.println("輸出放入數組的98個數:");
		for(int i=0;i<a.length;i++){
			if(i%10 == 0 && i>0){//按照每行10個數排列
				System.out.println();
			}
			System.out.print(a[i]+"\t");
		}
		
		//輸出沒有被放入數組的2個數
		System.out.println();
		System.out.println("沒有被放入數組的2個數:");
		for(int i=0;i<num.length;i++){
			if(num[i] != 0){
				System.out.print(num[i]+"\t");
			}
		}
    }
}

結果顯示:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章