题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

这篇博客记录了一道Java编程练习题,旨在统计输入字符中字母、空格、数字和其他字符的数量。博主分享了尝试使用键盘输入char类型数据时遇到的问题,即空格无法被读取,最终采用静态初始化char数组并包含空格的方式解决问题。此外,博主还探讨了通过输入String类型数据再转成char数组的方法,以及因版本问题导致Character.isSpace()方法弃用的情况,转而使用ASCII码来判断空格。同时,博主还提及了Java中''的含义。

学习碎碎念(java)
这是今天做的一道练习,想发出来说一说感想
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为’\n’.
代码:借鉴的正确答案

package day30;
import java.util.Scanner;
public class Demo {
	public static void main(String[] args) {
		 int num=0;
		 int letter=0;
		 int blank=0;
		 int other=0;  
	        Scanner  s=new Scanner(System.in);  
	        System.out.println("请输入字符串");  
	        String  result=s.nextLine();  
	        char x[]=result.toCharArray(); //String转char类型数组 
	        for(int i=0;i<x.length;i++){  
	           if(Character.isDigit(x[i])){  
	               num++;  
	           }else if(Character.isLetter(x[i])){  
	               letter++;  
	           }else if((int)x[i] == 32){  
	               blank++;  
	           }  
	           else{  
	               other++;  
	           }  
	      
	        }  
	        System.out.println(x.length);
	        System.out.println("数字的个数是"+num);  
	        System.out.println("字符的个数是"+letter);  
	        System.out.println("空值的个数是"+blank);  
	        System.out.println("其他的个数是"+other); 
	        s.close();
	}
}

下面我自己写的

package day30;

public class CalcChar {
	public static void main(String[] args) {
		calc();
	}
	public static void calc() {
		int letter = 0;
		int space = 0;
		int number = 0;
		int other = 0;
		char[] array = {' ',' ','1','2','3','a','b','c','%','e'};//接收10个字符
		for(int i = 0;i < 10;i++) {
			if(Character.isDigit(array[i])) {
				number++;
			}
			else if(Character.isLetter(array[i])) {
				letter++;
			}
			else if((int)array[i] == 32) {//判断是否是空格
				space++;
			}
			else {
				other++;
			}
		}
		System.out.println("数字的个数是"+number);  
        System.out.println("字符的个数是"+letter);  
        System.out.println("空格的个数是"+space);  
        System.out.println("其他的个数是"+other); 
//		sc.close();
		
	}
}

感想:我写的过程尝试的方法是通过键盘输入char类型的数据逐个录入char类型数组,但是该方法键盘输入空格并不读取。最后就你看的那样啦,我直接静态初始化定义一个char数组,里面直接放个空格解决掉了这个鬼问题,但是不能键盘输入实在太low了。还要继续学习!

键盘输入char类型的方法:

Scanner input = new Scanner(System.in);
char c = input.next().charAt(0);

借鉴的答案是通过键盘输入String类型数据,在通过toCharArray()把字符串转成char类型的数组。(这里有个很好的优点,这个方法不是通过键盘输入字符串转成char[]吗?它是动态的!!!是根据你写的字符串的多少来生成对应长度的char[],牛逼!)

过程中还遇到因版本问题而失效的方法,判断 字符是否是空格

Character.isSpace(array[i])(编译器报错翻译:- type字符中的isSpace(char)方法已弃用,版本1.1,我也不知道这是什么鬼版本)

没办法啦,只能对应ACSII码表这样写了,空格对应的十进制是32.

else if((int)array[i] == 32) {
space++;
}

过程中还顺带了解下了java中\0代表什么含义

我们试着可以打印一下,打印结果是一个空白。这里说明一下,空白和空格是不一样的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值