当前位置: 首页 > news >正文

基于字符串的专项实验

2.1 验证性实验

1、调试下面的程序,分析程序的功能和运行结果并添加代码注释。

import java.util.Scanner;

public class LetterCount {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个字符串:");

        String str = scanner.nextLine();

        int count = 0;

        for (int i = 0; i < str.length(); i++) {

            char c = str.charAt(i);

            if (Character.isLetter(c)) { // 判断是否为字母

                count++;

            }

        }

        System.out.println("字符串中字母的个数为:" + count);

        scanner.close();

    }

}

2、调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class EmailHandler {

    public static void main(String[] args) {

        String email = "zhangmj@zparkhr.com";

        int atIndex = email.indexOf('@');

        if (atIndex != -1) {

            String username = email.substring(0, atIndex);

            System.out.println("邮箱用户名:" + username);

        } else {

            System.out.println("邮箱格式错误,无@符号");

        }

        

        boolean hasAt = email.contains("@");

        boolean hasDot = email.contains(".");

        int lastDotIndex = email.lastIndexOf('.');

        boolean isDotAfterAt = hasAt && hasDot && (lastDotIndex > atIndex);

        

        if (hasAt && hasDot && isDotAfterAt) {

            System.out.println("邮箱格式合法");

        } else {

            System.out.println("邮箱格式不合法");

        }

    }

}

3、调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

import java.util.Random;

public class RandomCharPicker {

    public static void main(String[] args) {

        String source = "ABCDEFGhijklmn1234567";

        Random random = new Random();

        StringBuilder sb = new StringBuilder();

        

        for (int i = 0; i < 4; i++) {

            // 生成0到字符串长度-1的随机索引

            int index = random.nextInt(source.length());

            char c = source.charAt(index);

            sb.append(c); // 拼接字符

        }

        

        System.out.println("随机拼接的字符串:" + sb.toString());

    }

}

4、调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

import java.util.Scanner;

public class StringReverse {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个字符串:");

        String str = scanner.nextLine();

        StringBuilder sb = new StringBuilder(str);

        String reversedStr = sb.reverse().toString(); // 利用StringBuilder的reverse方法

        System.out.println("反转后的字符串:" + reversedStr);

        scanner.close();

    }

}

5、调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class DigitCount {

    public static void main(String[] args) {

        String digitStr = "1239586838923173478943890234092";

        int[] counts = new int[10]; // 索引0-9对应数字0-9的次数

        for (int i = 0; i < digitStr.length(); i++) {

            char c = digitStr.charAt(i);

            int digit = c - '0';

            counts[digit]++;

        }

        

        for (int i = 0; i < counts.length; i++) {

            System.out.println("数字" + i + "出现的次数:" + counts[i]);

        }

    }

}

6、调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

import java.util.Scanner;

public class CharReplace {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入字符串:");

        String str = scanner.nextLine();

        System.out.print("请输入要替换的字符:");

        char oldChar = scanner.next().charAt(0);

        System.out.print("请输入替换后的字符:");

        char newChar = scanner.next().charAt(0);

        

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.length(); i++) {

            char c = str.charAt(i);

            if (c == oldChar) {

                sb.append(newChar);

            } else {

                sb.append(c);

            }

        }

        

        System.out.println("替换后的字符串:" + sb.toString());

        scanner.close();

    }

}

2.2 自主设计性实验

7、编程字符串中单词个数统计。要求:输入一个英文句子(单词之间用空格分隔,标点符号与单词相连,如 “Hello, world! This is a test.”),统计句子中单词的个数(忽略标点符号,仅以空格分隔判断单词)。

提示:可先去除字符串中的标点符号,再以空格分割字符串,统计非空元素的个数。

      Scanner输入中 nextLine() 方法可以接受输入空格!

8、编程实现手机号格式校验与处理。要求:设计程序实现手机号的格式校验,规则如下:

(1)长度为 11 位;

(2)以 1 开头;

(3)第二位为 3、4、5、7、8 中的一个。

校验通过后,将号码中间 4 位替换为 “xxxx”(如 “13812345678” 处理为 “138xxx5678”)。

9、编程实现字符串中最长连续相同字符统计。要求:输入一个字符串,找出其中最长的连续相同字符及其长度。例如,字符串 “aabbbccddddd” 中,最长连续字符为 “d”,长度为 5。

10、编程实现两个字符串的公共前缀查找。要求:输入两个字符串,查找它们的最长公共前缀。例如,“flower” 和 “flow” 的公共前缀为 “flow”;“dog” 和 “racecar” 的公共前缀为 “”(空字符串)。

11、编程实现密码强度检测。要求:设计程序检测密码强度,规则如下:

(1)长度≥8 位;

(2)包含大小写字母、数字、特殊符号(如!@#$%)中的至少三种;

满足以上条件为 “强密码”,仅满足(1)为 “中密码”,否则为 “弱密码”。输入密码后,输出对应的强度等级。

12、编程实现字符串编码转换。要求:实现字符串的简单编码转换,规则为:将每个字符的 ASCII 值加 3 后转换为新字符(如 'a'→'d','5'→'8'),编码后的字符串需保留原字符串的长度和格式。编写解码方法,将编码后的字符串还原为原字符串。

http://www.dtcms.com/a/585187.html

相关文章:

  • CPO-SVM回归 基于冠豪猪优化算法支持向量机的多变量回归预测 (多输入单输出)Matlab
  • 飞凌嵌入式ElfBoard-标准IO接口之关闭文件
  • Rust 练习册 :Prime Factors与质因数分解
  • 12380网站开发apache wordpress rewrite
  • CSS - transition 过渡属性及使用方法(示例代码)
  • web网页开发,在线%考试管理%系统,基于Idea,vscode,html,css,vue,java,maven,springboot,mysql
  • 2025年北京海淀区中小学生信息学竞赛第一赛段试题(附答案)
  • Linux 基础开发工具入门:软件包管理器的全方位实操指南
  • 金仓数据库用户权限隔离:从功能兼容到安全增强的技术演进
  • shell(4)--shell脚本中的循环:(if循环,for,while,until)和退出循环(continue,break, exit)
  • IDEA 软件下载 + 安装 | 操作步骤
  • seo建站推广泉州建站软件
  • HarmonyOS 诗词填空游戏开发实战教程(非AI生成 提供源代码和演示视频)
  • 【期末网页设计作业】HTML+CSS+JavaScript 蜡笔小新 动漫主题网站设计与实现(附源码)
  • 柳州建站衣联网和一起做网站。哪家强
  • 深入解析CFS虚拟运行时间:Linux公平调度的核心引擎
  • cdr做网站流程哪家公司做网站结算好
  • 专业课复习计划
  • SQL50+Hot100系列(11.8)
  • 猫狗识别数据集:34,441张高质量标注图像,深度学习二分类任务训练数据集,计算机视觉算法研发,CNN模型训练,图像识别分类,机器学习实践项目完整数据资
  • DOM NodeList 简介
  • 【数据结构】unordered 系列容器底层结构和封装
  • 昆明做网站要多少钱京津冀协同发展交通一体化规划
  • Rust编程学习 - 问号运算符会return一个Result 类型,但是如何使用main函数中使用问号运算符
  • 『 数据库 』MySQL索引深度解析:从数据结构到B+树的完整指南
  • Spring JDBC源码解析:模板方法模式的优雅实践
  • 19-Node.js 操作 Redis 实战指南:ioredis 客户端全解析与异步场景落地
  • linux服务-iptables 原理及示例详解
  • Firebase 架构原理与实战入门:从零搭建你的第一个云端应用
  • 精品在线试题库系统|基于SpringBoot和Vue的精品在线试题库系统(源码+数据库+文档)