输入一个字符串,判断能否转化为数字,如果能输出,不能则统计其中数字,英文字母,空格还有其他的个数并输出,帮忙看一下我的这个程序错在哪?
import java.io.* ;
import java.util.* ;
public class Test{
public static void main(String [] args) throws Exception{
System.out.println("请输入字符串:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line=br.readLine();
/*System.in 接受从控制台输入的字节
new InputStreamReader(System.in);构造一个InputStreamReader对象
这个对象是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
new BufferedReader(new InputStreamReader(System.in));
构造一个字符流的缓存,里面存放在控制台输入的字节转换后成的字符。
line=br.readLine();从这个缓存中读取一行的内容
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));整个这句话拆开
来写为:
、************************************
InputStream in = System.in ;
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);*/
if(line.matches("\\d+")) //正则表达式 详细见java.util.regex 类 Pattern
System.out.println("数字"+line);
else{
System.out.println("非数字");
int digital = 0;
int character = 0;
int other = 0;
int blank = 0;
char[] ch = null;
ch = line.toCharArray();
for(int i=0; i<ch.length; i++) {
if(i >= '0' && i <= '9') {
digital ++;
} else if((i >= 'a' && i <= 'z') || (i > 'A' && i <= 'Z')) {
character ++;
} else if(i== ' ') {
blank ++;
} else {
other ++;
}
}
System.out.println("数字个数: " + digital);
System.out.println("英文字母个数: " + character);
System.out.println("空格个数: " + blank);
System.out.println("其他字符个数:" + other );}
}
}
[解决办法]
String s = "324[a-z]+[a][b] [c][a-z]+ADDD" ;int digital = 0;int character = 0;int other = 0;int blank = 0;for (int i = 0; i < s.length(); i++) { String s2 = s.substring(i, i+1) ; System.out.println(s2); if(s2.matches("\\d")){ digital ++; }else if(s2.matches("[a-zA-Z]")){ character ++; }else if(s2.matches(" ")){ blank ++; }else{ other ++; }}System.out.println(digital +" "+character +" "+ other +" "+blank);
[解决办法]
你仔细看一下你是在用那个值判断类型
你判断的是i
你应该这样写:
for(int i=0; i<ch.length; i++) {
if(ch[i] >= '0' && ch[i] <= '9') {
digital ++;
} else if((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] > 'A' && ch[i] <= 'Z')) {
character ++;
} else if(ch[i]== ' ') {
blank ++;
} else {
other ++;
}
}