自己写的:
import java.util.Scanner;
public class P2017{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int[] count=new int[n];
String[] str = new String[n];
for(int i=0;i<n;i++){
str[i]=sc.next();
int num=str[i].length();
for(int j=0;j<num;j++){
if(str[i].charAt(j)>='0'&&str[i].charAt(j)<='9'){
count[i]++;
}
}
}
for(int i=0;i<n;i++){
System.out.println(count[i]);
}
}
}
}
/*
* sc.nextInt(): 只接收整数,,整数后面的换行符还留在流内不读出来
* sc.next(): 接收到空白符就丢,直到接收到一个非空白符的字符串,以遇到下一个空白符为停止标记
* sc.nextLine(): 接收到换行符就停,把换行符及前面部分从流中取出来, 把换行符丢掉,剩下的部分就是返回值
*/
更优方法:
public class P2017
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();//吸掉多余换行符
while(n-->0){
//String str = sc.next();
String str = sc.nextLine();
int count=0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch>='0' && ch<='9'){
count++;
}
}
System.out.println(count);
}
}
}