java语言写 在文件a中有10个整数按从小到大的顺序排列,在其中插入一个整数,插入后数据仍然有序? 20C

在文件a中有10个整数按从小到大的顺序排列,在其中插入一个整数,插入后数据仍然有序
用java写 求个代码

4个回答

import java.io.File;  
import java.io.InputStreamReader;  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileInputStream;  
import java.io.FileWriter;  

public class cin_txt {  
    static void main(String args[]) {  
        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  

            /* 读入TXT文件 */  
            String pathname = "D:\\你的路径\\1.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  
            File filename = new File(pathname); // 要读取以上路径的input。txt文件  
            InputStreamReader reader = new InputStreamReader(  
                    new FileInputStream(filename)); // 建立一个输入流对象reader  
            BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言  
            String line = "";  
            line = br.readLine();  
            //while (line != null) {  
            //    line = br.readLine(); // 一次读入一行数据  
            //} 
                        int toIns = 123; //要插入的整数
            String[] snums = line.split(",");
            String[] result = new String[snums.length + 1];
            int j = 0;
            for (int i = 0; i < snums.length + 1; i++)
            {
                        if (toIns > Integer.parseInt(snums[i]) && j == 0) { result[i] = String.valueOf(toIns); j = 1; }
                                                else if (j == 0) result[i] = snums[i]; 
                                                else result[i] = snums[i- 1];
            }
            /* 写入Txt文件 */  
            File writename = new File("D:\\你的路径\\2.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件  
            writename.createNewFile(); // 创建新文件  
            BufferedWriter out = new BufferedWriter(new FileWriter(writename));  
                        for (int i = 0; i < result.length; i++)
                        {
                        if (i == 0) out.write(result[i]);
            else out.write("," + result[i]);
                        }

            out.flush(); // 把缓存区内容压入文件  
            out.close(); // 最后记得关闭文件  

        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

运行本程序之前,先创建一个1.txt的文本文件,里面单行用逗号分割地写入10个整数。保存到和程序一致的路径里。
运行结果输出到2.txt

将文件读取出来的数据转化为list,然后加数据进去,在sort一下,在写出

package com.haijie.java;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class MainTest {

// 下面是你的源数据文件路径
static String mSrcFilePath = "D:\\src.txt";
// 下面是你的目标数据文件路径
static String mDstFilePath = "D:\\dst.txt";
static List<Integer> mSrcDataList = new ArrayList<>();
// 下面是你要插入的数据
static int mInsertNumber = 3;

public static void main(String[] args) {
    // 读取文件中数据
    readFile();
    // 插入数据并排序
    sortData();
    // 排序结果写入文件
    writeFile();
}

/**
 * 读取文件数据
 */
private static void readFile() {
    File file = new File(mSrcFilePath);

    try {
        BufferedReader reader = null;
        reader = new BufferedReader(new FileReader(file));

        String tempString = null;

        // 按行读取数据并存入List
        while ((tempString = reader.readLine()) != null) {
            mSrcDataList.add(Integer.parseInt(tempString));
        }

        reader.close(); 
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * 数据排序
 */
private static void sortData() {
    // 插入数据
    mSrcDataList.add(mInsertNumber);
    Collections.sort(mSrcDataList);
}

/**
 * 结果写入文件
 */
private static void writeFile() {
    File file = new File(mDstFilePath);

    try {
        if (!file.isFile()) {
            file.createNewFile();
        }
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        for (int data : mSrcDataList){
            writer.write(data + "\r\n");
        }
        writer.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

您好,关于您的这个问题,这边有份资料您可以参考下:https://blog.csdn.net/Wyongkang/article/details/81102873
虽然这份不是java的,但是您可以参考下思路的呢。

如果解决了您的问题,请点击采纳,如果并没有,请在下方回复,我会继续帮您解答。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问