計算每個數出現次數 java
阿新 • • 發佈:2018-12-19
問題描述
需要編寫程式,讀入int數,然後計算它們的出現次數,以升序表現, 以0結束。
程式
private static Scanner input;
public static void main(String[] args) {
int[] mylist = nPrint();
repeatNumbers(mylist);
}
private static void repeatNumbers(int[] mylist) {
Arrays.sort(mylist);
int j = 0;
int[] number = new int[mylist.length] ;
for (int i = 1; i < mylist.length; i++) {
// System.out.println(mylist[i]);
if (mylist[i - 1] != mylist[i]) {
number[j] = mylist[i - 1];
j++;
}
}
number[j] = mylist[mylist.length - 1];
int[] temp = new int[j + 1];
for (int i = 0; i < temp.length; i++) {
for (int k = 0; k < mylist.length; k++) {
if (number[i] == mylist[k])
temp[i]++;
}
}
for (int i = 0; i < temp.length; i++) {
System.out.print(number[i] + " occurs " + temp[i] + " time");
if(temp[i]>1)
System.out.println("s");
else
System.out.println();
}
}
private static int[] nPrint() {
input = new Scanner(System.in);
System.out.print("Enter the integers between 1 ans 100:");
int[] mylist = new int[1];
int i = 0;
while (true) {
mylist[i] = input.nextInt();
if (mylist[i] == 0)
break;
mylist = newArr(mylist);
i++;
}
int[] newMylist;
newMylist = Arrays.copyOf(mylist, mylist.length - 1);
return newMylist;
}
private static int[] newArr(int[] mylist) {
int[] newMylist = new int[mylist.length + 1];
for (int i = 0; i < mylist.length; i++) {
newMylist[i] = mylist[i];
}
return newMylist;
}
分析程式
程式一開始是輸入函式nPrint(),但是由於題意,我必須再加入一個擴容函式newArr來保證陣列的輸入正確。 然後,我使用了repeatNumbers來計算和輸出,思路為先將陣列排序,再用number[]陣列來存放數字,數字是單一的(集合也能做到,不過有些忘記了)先用這個吧。 之後,一個一個比較計數,最後迴圈輸出。