m0_68807715 2022-10-29 21:19 采纳率: 100%
浏览 41
已结题

关于#java#的问题:通过程序可维护一段(几行)内容,包括:增加一行、删除一行、修改一行、替换一行中的某一个字符串、查看编辑区所有内容、退出程序简化:编辑区行数不超过九行

运用StringBuffer,String,特别注意抽象和封装的运用

通过程序可维护一段(几行)内容,包括:
增加一行、删除一行、修改一行、替换一行中的某一个字符串、查看编辑区所有内容、退出程序
简化:编辑区行数不超过九行

分两个类 Contents(内容维护类),和TestLineEditor
Contents类维护(保存和修改)编辑区的内容, TestLineEditor类包含main方法提供交互界面(命令行), main方法通过获得用户的输入的命令并根据命令调用行编辑器类的方法来更改编辑区的内容

  • 写回答

2条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2022-10-30 12:04
    关注

    简单写了部分,供参考:

    package com.yelang.case2;
    public class Contents {
        private StringBuffer contents = new StringBuffer(1024);
        private static final String com = "\r\n";
    
        public StringBuffer getContents() {
            return contents;
        }
    
        public void setContents(StringBuffer contents) {
            this.contents = contents;
        }
        
        //增加一行
        public void addLine(String content) {
            int length = this.getContents().toString().split(Contents.com).length;
            if(length < 9) {
                this.getContents().append(content +Contents.com);
            }
        }
        
        //删除指定一行
        public void removeLine(int index) {
            String [] strContents = this.getContents().toString().split(Contents.com);
            StringBuffer target = new StringBuffer(1024);
            for(int i = 0;i<strContents.length;i++) {
                if(i == index) {
                    continue;
                }
                target.append(strContents[i]).append(Contents.com);
            }
            this.setContents(target);
        }
        
        //编辑某一行内容
        public void editContentByIndex(int index,String content) {
            String [] strContents = this.getContents().toString().split(Contents.com);
            StringBuffer target = new StringBuffer(1024);
            for(int i = 0;i<strContents.length;i++) {
                if(i == index) {
                    target.append(content).append(Contents.com);
                }else {
                    target.append(strContents[i]).append(Contents.com);
                }
            }
            this.setContents(target);
        }
        
        //替换某一行内容
        public void replaceContentByIndex(int index,String sourceStr,String targetStr) {
            //自行补充
        }
        
        //查看所有内容
        public String showAll() {
            return this.getContents().toString();
        }
    }
    
    package com.yelang.case2;
    import java.util.Scanner;
    public class TestLineEditor {
        public static void main(String[] args) {
            Contents c = new Contents();
            
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入操作方法(1:新增 2:删除):");
            //使用next方式接收
            String str = scan.nextLine();
            System.out.println("请输入新增的内容"+str);
            Scanner scan2 = new Scanner(System.in);
            String str1 = scan2.nextLine();
            c.addLine(str1);
            System.out.println("输出内容:\t"+c.showAll());
            //及时关闭IO流的类,否则会一直占用资源
            scan.close();
        }
    }
    

    请输入操作方法(1:新增 2:删除):
    1
    请输入新增的内容1
    kdfldjfkldjfldjfdlfjdlfjdlkfjkj京东客服进度款
    输出内容: kdfldjfkldjfldjfdlfjdlfjdlkfjkj京东客服进度款

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么