团体程序设计天梯赛-练习集
L1-003 个位数统计
题目
给定一个k(k<=1000)位整数,统计每位数字的个数
分析
- 整数位数较大,考虑采用字符串
- 判断每一位的个数,思考如何将字符串中的字符抽离出来
- 需要10个计数器,分别记录0-9字符的个数,采用数组
解答
第一种,使用charAt(),判断字符
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String m = sc.nextLine();
int[] count = {0,0,0,0,0,0,0,0,0,0};
for(int i = 0; i < m.length(); i++) {
switch(m.charAt(i)) {
case '0': count[0]++; continue;
case '1': count[1]++; continue;
case '2': count[2]++; continue;
case '3': count[3]++; continue;
case '4': count[4]++; continue;
case '5': count[5]++; continue;
case '6': count[6]++; continue;
case '7': count[7]++; continue;
case '8': count[8]++; continue;
case '9': count[9]++; continue;
}
}
int i = 0;
while(i<=9) {
if(count[i]!=0) {
System.out.println(i+":"+count[i]);
}
i++;
}
sc.close();
}
}
第二种,采用subString(i,i+1),判断字符串
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String m = sc.nextLine();
int[] count = {0,0,0,0,0,0,0,0,0,0};
System.out.println(m);
for(int i = 0; i < m.length(); i++) {
switch(m.substring(i, i+1)) {
case "0": count[0]++; continue;
case "1": count[1]++; continue;
case "2": count[2]++; continue;
case "3": count[3]++; continue;
case "4": count[4]++; continue;
case "5": count[5]++; continue;
case "6": count[6]++; continue;
case "7": count[7]++; continue;
case "8": count[8]++; continue;
case "9": count[9]++; continue;
}
}
int i = 0;
while(i<=9) {
if(count[i]!=0) {
System.out.println(i+":"+count[i]);
}
i++;
}
sc.close();
}
}