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

文章目录

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

🌹例子

文本文件中有下面的数据
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.hqwc.cn/news/215735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日本运营商启动先进边缘云技术研发

摘要&#xff1a;日本运营商乐天移动最近启动了为 5G 之后的下一个通信标准开发边缘平台功能的研发工作。 乐天移动&#xff08;Rakuten Mobile&#xff09;表示&#xff0c;其面向下一代通信的先进边缘云技术研发&#xff08;R&D&#xff09;项目已被日本国家信息通信技术…

前端技术探秘-Nodejs的CommonJS规范实现原理 | 京东物流技术团队

了解Node.js Node.js是一个基于ChromeV8引擎的JavaScript运行环境&#xff0c;使用了一个事件驱动、非阻塞式I/O模型&#xff0c;让JavaScript 运行在服务端的开发平台&#xff0c;它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。Node中增添了很…

【深度学习】P1 数据缺失值预处理

数据缺失值预处理 创建数据集展示数据集缺失值处理 创建数据集 首先创建一个人工数据集&#xff0c;作为下文对数据缺失值预处理的案例&#xff0c; import osos.makedirs(os.path.join(.., data), exist_okTrue) data_file os.path.join(.., data, house_tiny.csv) with op…

关于vs code Debug调试时候出现“找不到任务C/C++: g++.exe build active file” 解决方法

vs code Debug调试时候出现“找不到任务C/C: g.exe build active file” &#xff0c;出现报错&#xff0c;Debug失败 后来经过摸索和上网查找资料解决问题 方法如下 在Vs code的操作页面左侧有几个配置文件 红框里的是需要将要修改的文件 查看tasks.json和launch.json框选&…

类和对象(下)

目录 1.初始化列表 1.1 构造函数体内的赋值 1.2 初始化列表 1.对象整体定义和成员变量定义的区别 2.初始化列表的写法 1.3 和C11的联系 1.4 针对初始化列表的建议 2.静态成员 2.1 静态成员变量 1.概念 2.特性 2.2 静态成员函数 1.概念 2.特性 3.友元 3.1 友元函…

linux进程调度(一)-进程概述

一、什么是进程 进程是指计算机已运行的程序。程序本身只是指令、数据及其组织形式的描述。进程就是一个程序的执行实例&#xff0c;也就是正在执行的程序。在linux操作系统的中&#xff0c;进程就是一个担当分配系统资源CPU时间、内存的实体。进程控制的主要功能是对系统中的所…

Shell循环:for(二)

一、通过用户列表文件创建用户 需求&#xff1a;通过用户列表文件创建用户 [rootlocalhost ~]# cat user.txt qian yoa huang演示&#xff1a; [rootlocalhost ~]# vim foruser.sh #编写脚本 #!/bin/bash for i in cat user.txt do useradd $i if [ $? -eq 0 ] thenech…

思科模拟器操作命令

模式 思科模拟器常见的模式有 用户模式 能够操作的命令比较少 特权模式特权模式下面可以操作的比较多 全局模式 接口模式 用户模式进入特权模式: 命令enable 特权模式进行全局模式命令: configure terminal 退出命令 exit命令&#xff1a;返回上一层&#xff0c;即一步一步…

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

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

拿捏---JVM原理

文章目录 JVM内存划分JVM类加载为什么需要类加载&#xff1f;类加载的过程何时触发类加载&#xff1f;双亲委派模型 JVM的垃圾回收机制&#xff08;GC&#xff09;什么是垃圾回收&#xff1f;GC回收哪部分内存&#xff1f;回收机制怎么找出垃圾&#xff1f;引用计数可达性分析&…

物流实时数仓:数仓搭建(ODS)

系列文章目录 物流实时数仓&#xff1a;采集通道搭建 物流实时数仓&#xff1a;数仓搭建 文章目录 系列文章目录前言一、IDEA环境准备1.pom.xml2.目录创建 二、代码编写1.log4j.properties2.CreateEnvUtil.java3.KafkaUtil.java4.OdsApp.java 三、代码测试总结 前言 现在我们…

大模型推理加速框架vllm部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…