package mop;
import java.util.Scanner;
public class e4 {
public static void main(String[]args)
{
System.out.println("enter :");
Scanner scan=new Scanner(System.in);
String str=new String();
str=scan.nextLine();
System.out.println(str);
scan.close();
int d=0;//数字
int s=0;//小写字母
int x=0;//大写字母
int o=0;//其他字符
while(str!=null)
{
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)>=0 && str.charAt(i)<=9)
d++;
if(str.charAt(i)>='a' && str.charAt(i)<='z')
s++;
if(str.charAt(i)>='A' && str.charAt(i)<='Z')
x++;
else
o++;
}
}
System.out.println(" big character:"+x+"small character:"+s+"data :"+d+"other"+o);
}
}
有三个问题:
一是while(str != null){}是个死循环;
二是你判断数字字符有问题:
if(str.charAt(i)>=0 && str.charAt(i)<=9)
d++;
数字字符'1'的ASCII码值是49,而根据你的判断‘1’就不是数字字符;
三是你的控制逻辑有问题:
按照你的控制逻辑,只要是不满足第三个if条件的字符都是其他字符。
下面是修改过的例子:
package test;在while处加一个标记"exit"即可