package packcharacterCounter;
import java.util.Scanner;public class CharacterCounter {
public static void main(String[] args) {
char c;
System.out.print("请输入一段字符,单击“0”结束!");
Scanner scanner = new Scanner(System.in);
c= scanner.nextLine();
int i=0;
int j=0;
int p=0;
while(c!='0')
{
if((c>='a'&&c<'z')||(c>'A'&&c<'Z'))
i=i+1;
else if(c>'1'&&c<'9')
j=j+1;
else
p=p+1;
c= scanner.next(); }
System.out.print("字母一共有"+i+"个\n");
System.out.print("数字一共有"+j+"个\n");
System.out.print("其他控制符一共有"+p+"个\n"); }}中间打红色标记的两行老出错?我也知道是字符与字符串的问题,可在网上查找一直没有找到好的解决办法?
该怎么做?

解决方案 »

  1.   

    package packcharacterCounter;
    import java.util.Scanner;public class CharacterCounter {
        public static void main(String[] args) {
            char c;
            System.out.print("请输入一段字符,单击“0”结束!");
            Scanner scanner = new Scanner(System.in);
            c= scanner.nextLine().charAt(0);
            int i=0;
            int j=0;
            int p=0;
            while(c!='0')
            {
                if((c>='a'&&c<'z')||(c>'A'&&c<'Z'))
                i=i+1;
                else if(c>'1'&&c<'9')
                j=j+1;
                else
                p=p+1;
                c= scanner.next().charAt(0);        }
            System.out.print("字母一共有"+i+"个\n");
            System.out.print("数字一共有"+j+"个\n");
            System.out.print("其他控制符一共有"+p+"个\n");        }}
      

  2.   

    你验证的是一段字符,而你代码中是要验证一个字符
    c= scanner.nextLine();scanner.nextLine()返回的是String类型,你用char类型的c变量接收肯定会有错的,
    你把char c改成String c就行了,不过这样改完后下边的代码都要修改。改成:public class CharacterCounter {
        public static void main(String[] args) {
            String c;
            System.out.print("请输入一段字符,单击“0”结束!");
            Scanner scanner = new Scanner(System.in);
            c = scanner.nextLine();
            int i=0;
            int j=0;
            int p=0;
            int index = 0;
            char currentChar = c.charAt(index++);
            while(currentChar != '0')
            {
                if(currentChar >= 'a'&& currentChar < 'z')||(currentChar >'A'&& currentChar <'Z'))
                i=i+1;
                else if(currentChar >'1'&& currentChar <'9')
                j=j+1;
                else
                p=p+1;
            System.out.print("字母一共有"+i+"个\n");
            System.out.print("数字一共有"+j+"个\n");
            System.out.print("其他控制符一共有"+p+"个\n");    
            
            if(index <= c.length()){
               char currentChar = c.charAt(index++);
            }else{
               c = scanner.nextLine();
               char currentChar = c.charAt(index++);
            }    }}