java字符串练习题4、统计一行字符串中所有的字符类型数量

简介: java字符串练习题4、统计一行字符串中所有的字符类型数量

java字符串练习题4、统计一行字符串中所有的字符类型数量


题目

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

解析,写个循环,挨个判断字符类型后进行归类统计数量即可,但是我们的统计方式可以分为两种,可以直接ASCII码来判断,也可以通过【Character】包装类来直接判断类型,这里【Character】包装类给了很全的符号类型判断方法。我在文末留给大家了。

测试字符串

akld akshdkja hsdha shda sodi9q7t8&*dsads

代码1:ASCII解题

package com.item.action;
import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 需要扫一行,包括空格,故而使用nextLine()
    String str = sc.nextLine();
    sc.close();
    // 将字符串转换为字符数组
    char[] array = str.toCharArray();
    int low = 0;
    int up = 0;
    int num = 0;
    int space = 0;
    int other = 0;
    for (char c : array) {
      if (c >= 'a' && c <= 'z') {
        low++;
      } else if (c >= 'A' && c <= 'Z') {
        up++;
      } else if (c >= '0' && c <= '9') {
        num++;
      } else if (c == ' ') {
        space++;
      } else {
        other++;
      }
    }
    System.out.println("小写字母有:" + low);
    System.out.println("大写字母有:" + up);
    System.out.println("数字有:" + num);
    System.out.println("空格有:" + space);
    System.out.println("其他字符有:" + other);
  }
}

效果展示:

代码2:Character包装类解题

package com.item.action;
import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 需要扫一行,包括空格,故而使用nextLine()
    String str = sc.nextLine();
    sc.close();
    // 将字符串转换为字符数组
    char ch[] = str.toCharArray();
    int zifu = 0;
    int num = 0;
    int space = 0;
    int other = 0;
    for (int i = 0; i < str.length(); i++) {
      if (Character.isLetter(ch[i])) {
        zifu++;
      } else if (Character.isDigit(ch[i])) {
        num++;
      } else if (Character.isWhitespace(ch[i])) {
        space++;
      } else {
        other++;
      }
    }
    System.out.println("字母数有:" + zifu);
    System.out.println("数字有:" + num);
    System.out.println("空格有:" + space);
    System.out.println("其他字符有:" + other);
  }
}

效果展示:

Character包装类函数

isDigit(ch) 如果指定字符是一个数字,返回true

isLetter(ch) 如果指定字符是一个字母,返回true

isLetterOrDigit(ch) 如果指定字符是一个数字或者字母,返回true

isLowerCase(ch) 如果指定字符是一个小写字母,返回true

isUpperCase(ch) 如果指定字符是一个大写字母,返回true

isWhitespace() 如果指定字符是一个空格,返回true

isValidCodePoint() 确定指定的代码点是否为从 0x0000 到 0x10FFFF 范围之内的有效 Unicode 代码点值

isDefined() 确定字符是否被定义为 Unicode 中的字符

isISOControl() 确定指定字符是否为 ISO 控制字符

isIdentifierIgnorable() 确定是否应该认为指定字符是 Java 标识符或 Unicode 标识符中可忽略的一个字符

希望能对大家有所帮助,如果对包装类不理解的可以先去搜索一下,后面将集合的时候我会对包装类进行具体的内容讲解。

我这里先留下一个概述,可以根据概述进行一个小小的理解:

包装类

Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。

八种基本数据类型的包装类

  1. boolean —> Boolean
  2. char —> Character
  3. byte—> Byte
  4. short—> Short
  5. long—>Long
  6. int —> Integer
  7. float—> Float
  8. double—> Double

包装类是自动装箱与拆箱的,也就是通过包装类可以将基本数据类型与对象类型直接进行类型切换,很方便快捷高效,具体的我们会在讲解集合的时候进行实操与讲解。

相关文章
|
21天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
95 60
|
11天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
33 6
|
13天前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
14天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
31 2
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
46 15
|
1月前
|
Java 编译器
Java“返回类型为 void 的方法不能返回一个值”解决
在 Java 中,如果一个方法的返回类型被声明为 void,那么该方法不应该包含返回值的语句。如果尝试从这样的方法中返回一个值,编译器将报错。解决办法是移除返回值语句或更改方法的返回类型。
|
1月前
|
Java
Java 中锁的主要类型
【10月更文挑战第10天】
|
11天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
7天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
27 9
|
10天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####