首页 > 其他分享 >StringBuilder练习项目代码及相关知识点

StringBuilder练习项目代码及相关知识点

时间:2025-01-08 23:32:24浏览次数:3  
标签:知识点 String StringBuilder 练习 System 字符串 input out

1. 动态字符串操作

需求:编写一个程序,接收用户输入的多个单词,并将它们组合成一个完整的句子,同时支持以下功能:

  • 动态添加单词
  • 删除某些单词
  • 将句子反转
    import java.util.Scanner;
    
    public class StringBuilderDemo {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            Scanner scanner = new Scanner(System.in);
    
            while (true) {
                System.out.println("当前句子: " + sb.toString());
                System.out.println("选择操作: 1-追加单词, 2-删除单词, 3-反转句子, 4-退出");
                int choice = scanner.nextInt();
                scanner.nextLine(); // 清除换行符
    
                switch (choice) {
                    case 1:
                        System.out.print("输入要追加的单词: ");
                        String word = scanner.nextLine();
                        sb.append(word).append(" ");
                        break;
                    case 2:
                        System.out.print("输入要删除的单词: ");
                        String deleteWord = scanner.nextLine();
                        int start = sb.indexOf(deleteWord);
                        if (start != -1) {
                            sb.delete(start, start + deleteWord.length() + 1); // 删除单词和后面的空格
                        } else {
                            System.out.println("未找到该单词!");
                        }
                        break;
                    case 3:
                        sb.reverse();
                        System.out.println("句子已反转!");
                        break;
                    case 4:
                        System.out.println("程序退出!");
                        return;
                    default:
                        System.out.println("无效操作!");
                }
            }
        }
    }
    

    相关知识点:

理解 scanner.nextLine()

scanner.nextLine() 的作用是 读取一整行输入并返回字符串。消费换行符.

行为特点

  • 它从输入流中读取,直到检测到换行符(\n)。
  • 换行符本身不会包含在返回值中。
  • 如果输入流中只有换行符,会返回一个空字符串。

sb.indexOf(String) 函数

  • sb.indexOf(String str)StringBuilder 类中的一个方法,用于在 StringBuilder 对象中查找指定子字符串的起始索引。

方法声明

public int indexOf(String str)

  • 返回值:
    • 如果找到,返回指定字符串 strStringBuilder 中第一次出现的索引。
    • 如果没找到,返回 -1

2. 模拟字符串压缩

需求:实现一个简单的字符串压缩功能,例如输入 "aaabbbccc",输出为 "a3b3c3"

代码示例

public class Main {
    public static void main(String[] args) {
        String input = "aaabbcc";
        StringBuilder stringBuilder = new StringBuilder();//这里用StringBuilder初始化了一个新的数组,初始长度为16,现在为空
        int count = 1; // 初始化计数值,需要输出

        for (int i = 1; i < input.length(); i++) {
            if (input.charAt(i) == input.charAt(i - 1)) {
                count++; // 如果当前字符与前一个字符相同,计数值加 1
            } else {
                // 如果不同,将前一个字符和计数值追加到 StringBuilder
                stringBuilder.append(input.charAt(i - 1)).append(count);
                count = 1; // 重新开始计数
            }
        }
        // 最后一个字符的处理
        stringBuilder.append(input.charAt(input.length() - 1)).append(count);

        // 输出压缩后的字符串
        System.out.println("Compressed string: " + stringBuilder.toString());
    }
}
  1. input.charAt(i)

    示例:

    String input = "hello";
    int i = 2; // 当前索引
    System.out.println(input.charAt(i));     // 输出 'l' (索引 2 的字符)
    System.out.println(input.charAt(i - 1)); // 输出 'e' (索引 1 的字符)
    
    • charAt 是字符串(String)的一个方法,用于返回字符串中指定索引位置的字符。
    • i 是一个索引值(从 0 开始),表示获取 input 字符串中第 i 个字符。
  2. input.charAt(i - 1)

    • 类似地,这里表示获取字符串中索引为 i - 1 的字符。
    • 索引 i - 1 是当前索引的前一个位置

    3.注意事项

  • i - 1 的边界问题

    • 如果 i = 0i - 1 会变成 -1,这会导致 索引越界异常 (StringIndexOutOfBoundsException)。
    • 因此,i 的值一般从 1 开始,而不是 0。
  • 应用场景

    • 这个逻辑通常用于检测字符串中相邻的重复字符,比如连续相同字符的统计、压缩字符串等。

3. 字符串回文检测

需求:输入一个字符串,判断其是否是回文(正读和反读相同)。

代码示例

public class PalindromeChecker {
    public static void main(String[] args) {
        String input = "madam";
        StringBuilder sb = new StringBuilder(input);

        if (input.equals(sb.reverse().toString())) {
            System.out.println(input + " 是回文!");
        } else {
            System.out.println(input + " 不是回文!");
        }
    }
}

注意input需传入stingbuilder类中才能够调用reverse方法.

标签:知识点,String,StringBuilder,练习,System,字符串,input,out
From: https://blog.csdn.net/m0_57725730/article/details/145014773

相关文章

  • 2025.1.8 练习赛总结
    总览本文同步发表与:洛谷:https://www.luogu.com.cn/article/hdzdhnif。博客园:<>。打得不好,在赛时只做了A题。昨晚的睡眠使我刚好处于困和不困的叠加态,导致想题的时候脑子极乱。A:Gym103430F。B:CF578B。C:CF1407D。D:洛谷P11122。E:CF1208D。A-Gym103430F-X-Mag......
  • C++ Qt练习项目 QChar功能测试
    个人学习笔记代码仓库GitCode-全球开发者的开源社区,开源代码托管平台新建项目设计UI1、拖入group box去掉名字2、拖入2个LineEdit3、拖入两个Label4、拖入两个PushButton5、点栅格布局1、拖入GroupBox2、拖入4个PushButton3、点栅格布局1、拖入G......
  • 【练习】PAT 乙 1041 考试座位号
    题目每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位......
  • 我在广州学 Mysql 系列——与索引相关的练习题
    ℹ️大家好,我是练小杰,今天星期二啦,还有三天就是星期五了,为了美好生活奋斗吧朋友们!本文将学习MYSQL中数据表内容的索引相关练习题目~~复习:......
  • 【题库】人工智能训练师练习题
    单选题1、Windows系统不能进行数据爬虫。A.正确B.错误2、自然语言处理是一门融语言学、计算机科学、心理学于一体的科学。A.正确B.错误3、文本分类是指将文本按照内容的不同判别到一个或多个预先确定的文本类别之中的过程。A.正确B.错误4、中文分词只局限于中文应......
  • C++ Qt练习项目 QSpinBox和QDoubleSpinBos 未完待续
    个人学习笔记新建项目设计UI......
  • 数组练习三
    给定一个字符串,判断其中是否含有重复字符(三种方法):解1packageexercises;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);//测试输入:Stringstr=s......
  • 面向对象(综合练习)
    文字版格斗游戏publicclasspeople{privateStringname;privateintxuetiao;publicpeople(Stringname){this.name=name;this.xuetiao=100;}publicStringgetName(){returnthis.name;}publicintge......
  • 高阶知识库搭建实战七、(知识库雏形开发:qianwen-plus+Faiss)(练习推荐)
    构建知识库:结合Faiss和qianwen-plus大模型的实践环境搭建参考前面几篇文章:基础环境搭建、Faiss向量数据库安装在当今信息爆炸的时代,如何高效地管理和检索海量知识成为了一个重要课题。知识库的构建为我们提供了一种有效的解决方案,它能够将分散的信息整合起来,方便我们进行......
  • STM32 单片机 练习项目 LED灯闪烁&LED流水灯&蜂鸣器 未完待续
    个人学习笔记文件路径:程序源码\STM32Project-DAP&DAPmini\1-1接线图                        3-1LED闪烁图片新建项目新建项目文件选择F103C8芯片关闭弹出窗口拷贝资料在项目内新建3个文件夹Start、Library、UserStart文件拷贝从......