【经典小练习】修改文件中的数据

文章目录

  • 🌹例子
  • 🌺思路
  • 🛸方法一
    • ✨报错解决
  • 🛸方法二

🌹例子

文本文件中有下面的数据
2-1-9-4-7-8
将文件中的数据进行排序,变成下面的数据
1-2-4-7-8-9

🌺思路

要对这些数据进行排序,可以采用以下思路:

读取文本文件中的数据:首先需要读取文本文件中的数据,并将其转换为程序中的数据结构,如数组或列表,以便进行排序操作。

分割数据:将读取到的字符串按照分隔符(这里是“-”)进行分割,得到各个数字的字符串表示。

转换为数字并排序:将分割得到的字符串转换为整数,并进行排序操作,可以使用常见的排序算法,如快速排序、归并排序等。在Java中,可以使用Arrays.sort()方法对数组进行排序,或使用Collections.sort()方法对列表进行排序。

将排序后的数字连接为字符串:将排序后的数字重新连接为字符串,并在数字之间添加分隔符“-”,得到最终的排序结果。

将排序结果写入文件:将排序后的结果写入文件,完成整个排序过程。

🛸方法一

package org.Demo6;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        //读取数据
        FileReader fr = new FileReader("E:\\a.txt");
        StringBuilder sb=new StringBuilder();
        int ch;
        while ((ch=fr.read())!=-1){
            sb.append((char)ch);
        }
        fr.close();

        //排序
        String str=sb.toString();
        String[] arrstr = str.split("-");

        ArrayList<Integer> list = new ArrayList<>();
        for (String s: arrstr){
            // 去除空白字符
            s = s.trim();
            if (!s.isEmpty()) {
                int i = Integer.parseInt(s);
                list.add(i);
            }
//            int i=Integer.parseInt(s);
//            list.add(i);
        }

        Collections.sort(list);

        //写出数据
        FileWriter fw = new FileWriter("E:\\b.txt");
        for (int i=0;i<list.size();i++){
            if (i==list.size()-1){
                //最后一个元素
                fw.write(list.get(i)+"");
            }else {
                //非最后一个元素
                fw.write(list.get(i)+"-");
            }
        }
        fw.close();
    }
}

✨报错解决

在这里插入图片描述
根据报错信息中提供的输入字符串"8\n",可以看到字符串中包含了换行符"\n"。这可能是导致转换失败的原因。Integer.parseInt()方法只能将符合整数格式的字符串转换为整数,当字符串中包含非数字字符时,会抛出NumberFormatException异常。
在这里插入图片描述
为了解决这个问题,你可以在转换之前先去除字符串中的空白字符,包括换行符。可以使用String.trim()方法去除字符串两端的空白字符

在这里插入图片描述

🛸方法二

package org.Demo6;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        //读取数据
        FileReader fr = new FileReader("E:\\a.txt");
        StringBuilder sb = new StringBuilder();
        int ch;
        while ((ch = fr.read()) != -1) {
            sb.append((char) ch);
        }
        fr.close();
        System.out.println(sb);

        //排序
        Integer[] arr = Arrays.stream(sb.toString().split("-"))
                .map(s -> s.trim()) //去掉首尾空格
                .map(Integer::parseInt)
                .sorted()
                .toArray(Integer[]::new);

        //写出
        FileWriter fw = new FileWriter("E:\\b.txt");
        String s=Arrays.toString(arr).replace(", ","-");//tostring操作解释后,是[1,2,4,7,8,9],带有", "的,我们要把", "(逗号空格)替换为”-“
        //上一段代码运行结束后是结果是带有[]的,我们只需要把头尾的[]去掉即可
        String result=s.substring(1,s.length()-1);
        fw.write(result);
        System.out.println(result);
    }

}

在这里插入图片描述
在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/186090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

堆的实现(堆的插入、堆的删除等)超级全

堆的实现&#xff08;堆的插入、堆的删除等&#xff09;超级全 文章目录 堆的实现&#xff08;堆的插入、堆的删除等&#xff09;超级全一、前期基础知识1.树结构①树的定义②树的相关概念③二叉树④满二叉树和完全二叉树a.满二叉树b.完全二叉树 ⑤二叉树的性质⑥二叉树顺序结构…

【JAVA】SpringBoot + mongodb 分页、排序、动态多条件查询及事务处理

【JAVA】SpringBoot mongodb 分页、排序、动态多条件查询及事务处理 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mongodb ↓ -->&…

多功能智能灯杆主要功能有哪些?

多功能智能灯杆这个词相信大家都不陌生&#xff0c;最近几年多功能智能灯杆行业发展迅速&#xff0c;迅速取代了传统路灯&#xff0c;那么多功能智能灯杆相比传统照明路灯好在哪里呢&#xff0c;为什么大家都选择使用叁仟智慧多功能智能灯杆呢&#xff1f;所谓多功能智能灯杆着…

如何开发有趣而富有创意的营销小游戏

在数字化时代&#xff0c;企业通过创意而独特的方式与目标受众互动&#xff0c;已成为提高品牌知名度和用户参与度的重要手段之一。其中&#xff0c;设计一款引人入胜的营销小游戏&#xff0c;不仅能吸引用户的眼球&#xff0c;还能有效传达品牌信息。以下是一些建议&#xff0…

人工智能-注意力机制之注意力汇聚:Nadaraya-Watson 核回归

查询&#xff08;自主提示&#xff09;和键&#xff08;非自主提示&#xff09;之间的交互形成了注意力汇聚&#xff1b; 注意力汇聚有选择地聚合了值&#xff08;感官输入&#xff09;以生成最终的输出。 本节将介绍注意力汇聚的更多细节&#xff0c; 以便从宏观上了解注意力机…

canvas高级动画001:文字瀑布流

canvas实例应用100 专栏提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。 canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重要的帮助。 文章目录 示例…

基于官方YOLOv4开发构建目标检测模型超详细实战教程【以自建缺陷检测数据集为例】

本文是关于基于YOLOv4开发构建目标检测模型的超详细实战教程&#xff0c;超详细实战教程相关的博文在前文有相应的系列&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a;《基于yolov7开发实践实例分割模型超详细教程》 《YOLOv7基于自己的数据集从零构建模型完整训练、…

electron windows robotjs 安装教程

Robotjs 安装 前言第一步 : 安装python第二步 : 安装Visual Studio 2022第三步 : 安装robotjs 前言 robotjs可以控制鼠标键盘&#xff0c;获取屏幕内容&#xff0c;配合electron可做很多自动化操作。windows下配置环境有很多坑&#xff0c;很多文章都太旧了。试了很多次发现了…

杰发科技AC7801——Flash模拟EEP内存分布情况

简介 本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解 核心代码如下 #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */ #define TE…

在新疆乌鲁木齐的汽车托运

在新疆乌鲁木齐要托运的宝! 看过来了 找汽车托运公司了 连夜吐血给你们整理了攻略!! ⬇️以下&#xff1a; 1 网上搜索 可以在搜索引擎或专业的货运平台上搜索相关的汽车托运公司信息。在网站上可以了解到公司的服务范围、托运价格、运输时效等信息&#xff0c;也可以参考其他车…

播放器开发(四):多线程解复用与解码模块实现

学习课题&#xff1a;逐步构建开发播放器【QT5 FFmpeg6 SDL2】 前言 根据第一章内容&#xff0c;我们首先可以先把解复用和解码模块完成&#xff0c;其中需要使用到多线程以及队列&#xff0c;还需要使用FFmpeg进行解复用和解码动作的实现。 创建BaseQueue基类 BaseQueue.h…

BUUCTF 谁赢了比赛? 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 小光非常喜欢下围棋。一天&#xff0c;他找到了一张棋谱&#xff0c;但是看不出到底是谁赢了。你能帮他看看到底是谁赢了么&#xff1f; 注意&#xff1a;得到的 flag 请包上 flag{} 提交 密文&#xff1a; 下载附…

代码随想录算法训练营第五十四天|392.判断子序列 115.不同的子序列

文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;代码随想录B站账号 状态&#xff1a;看了视频题解和文章解析后做出来了 392.判断子序列 class Solution:def isSubsequence(self, s: str, t: str) -> bool:dp [[0] * (len(t)1) for _ in range(len(s)1)]for i in ra…

ky10 server x86 auditd安装(日志审计系统)

概述 Auditd工具可以帮助运维人员审计Linux&#xff0c;分析发生在系统中的发生的事情。Linux 内核有用日志记录事件的能力&#xff0c;包括记录系统调用和文件访问。管理员可以检查这些日志&#xff0c;确定是否存在安全漏洞&#xff08;如多次失败的登录尝试&#xff0c;或者…

2、分布式锁实现原理与最佳实践(二)

常见分布式锁的原理 4.1 Redisson Redis 2.6之后才可以执行lua脚本&#xff0c;比起管道而言&#xff0c;这是原子性的&#xff0c;模拟一个商品减库存的原子操作&#xff1a; //lua脚本命令执行方式&#xff1a;redis-cli --eval /tmp/test.lua , 10 jedis.set("produ…

【Redis】事务

文章目录 事务的概念事务操作MULTIEXECDISCARDWATCHUNWATCH 事务的概念 Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执 ⾏ Redis 的事务和 MySQL 事务的区别 弱化的原⼦性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执…

基于 STM32F7 和神经网络的实时人脸特征提取与匹配算法实现

本文讨论了如何使用 STM32F7 和神经网络模型来实现实时人脸特征提取与匹配算法。首先介绍了 STM32F7 的硬件和软件特点&#xff0c;然后讨论了人脸特征提取和匹配算法的基本原理。接下来&#xff0c;我们将重点讨论如何在 STM32F7 上实现基于神经网络的人脸特征提取与匹配算法&…

2023年亚太杯数学建模A题解题思路(*基于OpenCV的复杂背景下苹果目标的识别定位方法研究)

摘要 由于要求较高的时效性和劳力投入&#xff0c;果实采摘环节成为苹果生产作业中十分重要的一部分。而对于自然环境下生长的苹果&#xff0c;光照影响、枝叶遮挡和果实重叠等情况普遍存在&#xff0c;这严重影响了果实的准确识别以及采摘点的精确定位。针对在复杂背景下苹果的…

Spring - Mybatis-设计模式总结

Mybatis-设计模式总结 1、Builder模式 2、工厂模式 3、单例模式 4、代理模式 5、组合模式 6、模板方法模式 7、适配器模式 8、装饰者模式 9、迭代器模式 虽然我们都知道有26个设计模式&#xff0c;但是大多停留在概念层面&#xff0c;真实开发中很少遇到&#xff0c;…

【迅搜03】全文检索、文档、倒排索引与分词

全文检索、文档、倒排索引与分词 今天还是概念性的内容&#xff0c;但是这些概念却是整个搜索引擎中最重要的概念。可以说&#xff0c;所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的&#xff0c;所以不要以为标题上有四个名词就感觉好…
最新文章