自己的解題程式碼
import java.util.Arrays;
import java.util.Scanner;
//import 要用的工具,陣列和Scanner
public class DigitCounting {
static int n[];//暫時儲存0~9個別出現次數的陣列
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int set,num;//set總共組數 num暫存數字N
int[] N=new int[20];//儲存不超過20組的數字N
set=scanner.nextInt();//第一行總組數
//根據組數丟set個數字N進陣列N[]
for(int i=0;i<set;i++){
N[i]=scanner.nextInt();
}
//set for-loop 組數的loop
for(int i=0;i<set;i++){
num=N[i];//這組要算的數字N
n=new int[10];//new 一個暫存0~9個別出現次數的陣列
//one case loop 一組內要作的事,從1開始數到數字N
for(int x=1;x<=num;x++){
calculate(x);//把目前數到的數字拿去統計
//calculate one case loop
}
//印出這個陣列的結果
printArray();
}
scanner.close();
}
//統計數字用的方法
static void calculate(int N){
String s=String.valueOf(N);//把數字變成字串拆解
//拆成個別位數作統計
//也可以用return回報結果,這邊用static變數
for(int y=0;y<s.length();y++){
char countNum=s.charAt(y);
switch(countNum){
case '1':
n[1]++;
break;
case '2':
n[2]++;
break;
case '3':
n[3]++;
break;
case '4':
n[4]++;
break;
case '5':
n[5]++;
break;
case '6':
n[6]++;
break;
case '7':
n[7]++;
break;
case '8':
n[8]++;
break;
case '9':
n[9]++;
break;
case '0':
n[0]++;
break;
}
}
}
static void printArray(){
//for-each迴圈
for(int i:n){
System.out.print(i+" ");
}
System.out.println();
}
}
測試資料:https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/testData/uva1225a.php
結果:
第一天先這樣好了,這題解法可以更精簡,但我是寫自己目前想到的方法