java输入一行字符,分别统计出其中英文字母、空格、.....(java50道经典编程题)

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

对于这个题目首先我们要知道一行字符,就是String类型的,我们要从键盘输入一行字符,要用到Scanner,而这里还要用到Scanner的一个方法,这个方法比较特殊是nextLine方法。你是要统计其中的这些不同的东西,所以要把这个字符串先转变的char类型的数组,而后再进行操作,对于我个人来说我是先在百度上搜索一些判断的方法函数,而后借助循环和变量自加的方法来做的直接上代码:

import java.util.Scanner;

//统计字符个数
public class Statistics {
  
  public static void main(String [] args) {
	  int letter = 0;  //字母
	  int space = 0;    //空格
	  int num = 0;      //数字
	  int other = 0;    //其他
	  System.out.println("请输入字符串");
	  Scanner scanner = new Scanner(System.in);
	  String examString = scanner.nextLine();
//	  System.out.println(examString);
	  char a[] = examString.toCharArray();
	  for(int i =0;i<a.length;i++) {
		  if(Character.isDigit(a[i])) {       //数字
			  num++;
		  }
		  else if(Character.isSpaceChar(a[i])) {    //空格
			  space++;
		  }
		  else if(Character.isLetter(a[i])) {       //字母
			  letter++;
		  }
		  else {                                    //其他
			  other++;
		  }
	  }
	  System.out.println("字母共有"+letter+"个,"+"空格共有"+space+"个,"+"数字共有"+num+"个,"+"其他共有"+other+"个");
	  
  }
}

结果如下:
在这里插入图片描述
中间我输入了一个空格。

老规矩来看一波大神代码

public static void no7(String str) {
		//abc  {'a','b','c'}
		char [] chars = str.toCharArray();
		int lettersCount = 0;//字母的个数
		int spaceCount = 0;//空格的个数
		int numCount = 0;//数字的个数
		int otherCount = 0;//其他的个数
		//高级循环 foreach  循环数组和集合
		for(char c: chars) {
			if(('a'<=c && 'z'>=c) || 'A'<=c && 'Z'>=c) {
				lettersCount++;
			}else if(c == ' ') {
				spaceCount++;
			}else if(c >='0' && c<='9') {
				numCount++;
			}else {
				otherCount++;
			}
		}
		System.out.println("数字有"+numCount+"\n字母有"+lettersCount+"\n空格有"+spaceCount+"\n其他有"+otherCount);
		
		
		
	}

这里大神没有用那种判断方法,因为大神倾向于用比较少的语言知识来实现我们目前的这个程序。大家可能不太理解这一段代码

if(('a'<=c && 'z'>=c) || 'A'<=c && 'Z'>=c) 

可能会想字母是怎么比较大小的,这里就涉及到一个东西ASCII码,具体这个东西大家可以自行百度谷歌。目前这个阶段我是以就业和毕业为目的。所以这个东西我就不先入手了。后续等我工作了,我会补上一些很底层,很基础的知识。

发布了64 篇原创文章 · 获赞 2 · 访问量 870

猜你喜欢

转载自blog.csdn.net/cdut2016/article/details/103721294