1. 程式人生 > >題:統計數字出現次數。 隨機生成100個數字,數字範圍從1到10,統計每個數字出現的次數並打印到控制臺。

題:統計數字出現次數。 隨機生成100個數字,數字範圍從1到10,統計每個數字出現的次數並打印到控制臺。

pre 方向 system 繼續 void pub arr static 遍歷


public static void main(String[] args) {
printCount(getNumList());
}

private static ArrayList<Integer> list;

public static ArrayList<Integer> getNumList() {
list = new ArrayList<Integer>();
Random r = new Random();
for (int i = 0; i < 100; i++) {
int num = r.nextInt(10) + 1;
list.add(num);
}

return list;
}
//主體方向思想,從集合中拿出一個數(遍歷順序) i=0時,下標為i的元素會和後面的所有比較,當他們相同時,會把下表為J的元素給換成0,最後遍歷到末尾了
//就把下標為i的元素也給他換成0,同時count變量會+1 記錄出現次數,count初始值就是1因為下標為i的時候的元素本身就是一個,
//for循環的意思如上,for循環內: 如果下標為i的元素是0,那麽就跳過本次循環直接進行下一步,那麽內循環裏就會一直跳一直跳直到i+1,
//如果第一個if不滿足,那麽當下標為1 的數和下標為i+1也就是j的元素相等時,count就要++因為他找到一個和他相同的元素了,處理完把j對應的元素給改成0
//那麽這樣第二個if的作用也就羅列清楚了,第三個if:就是要打印輸出的那一段了,說實話這個打印想起來起來還真的有些燒..., 當j叠代到最後一位數的時候
//開始打印了,也就是我們的題意所在,完了給他count初始化,因為還在循環內,這玩意我還要繼續用,最後因為完美主義情結,我們把"罪魁禍首"給改成0,雖然就算不改後面也用不到
public static void printCount(ArrayList<Integer> list) {
int count = 1;
int num = 0;
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i) == 0) {
continue;
}
if (list.get(i) == list.get(j)) {
count++;
num = list.get(j);
list.set(j, 0);
}
if(j==list.size()-1){
System.out.println("數字:" + num + "==" + count);
count=1;
list.set(i,0);
}
}


}

}

題:統計數字出現次數。 隨機生成100個數字,數字範圍從1到10,統計每個數字出現的次數並打印到控制臺。