贵州省住房建设部网站,网站建设市场分析,广州建设工程网站,百度网站推广价格查询文章目录 #x1f339;例子#x1f33a;思路#x1f6f8;方法一✨报错解决 #x1f6f8;方法二 #x1f339;例子
文本文件中有下面的数据 2-1-9-4-7-8 将文件中的数据进行排序#xff0c;变成下面的数据 1-2-4-7-8-9
#x1f33a;思路
要对这些数据进行排序#xf… 文章目录 例子思路方法一✨报错解决 方法二 例子
文本文件中有下面的数据 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 sbnew StringBuilder();int ch;while ((chfr.read())!-1){sb.append((char)ch);}fr.close();//排序String strsb.toString();String[] arrstr str.split(-);ArrayListInteger list new ArrayList();for (String s: arrstr){// 去除空白字符s s.trim();if (!s.isEmpty()) {int i Integer.parseInt(s);list.add(i);}
// int iInteger.parseInt(s);
// list.add(i);}Collections.sort(list);//写出数据FileWriter fw new FileWriter(E:\\b.txt);for (int i0;ilist.size();i){if (ilist.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 sArrays.toString(arr).replace(, ,-);//tostring操作解释后是[1,2,4,7,8,9]带有, 的我们要把, 逗号空格替换为”-“//上一段代码运行结束后是结果是带有[]的我们只需要把头尾的[]去掉即可String results.substring(1,s.length()-1);fw.write(result);System.out.println(result);}} 在技术的道路上我们不断探索、不断前行不断面对挑战、不断突破自我。科技的发展改变着世界而我们作为技术人员也在这个过程中书写着自己的篇章。让我们携手并进共同努力开创美好的未来愿我们在科技的征途上不断奋进创造出更加美好、更加智能的明天