我正在研究java中用于练习的程序,除了程序的一部分外,几乎所有内容都已完成。
在我深入研究问题之前,让我快速介绍一下该计划。基本上,程序从.txt文件读取数据,将信息存储在HashMap中,然后以期望的格式将输出打印到另一个txt文件。
打印出的每一行都需要最大字符长度为330.如果它接近达到该限制,它基本上需要转到下一行并继续打印它停止的位置。
我上传了一个链接到我的Dropbox文件(链接在这里:https://www.dropbox.com/sh/n5pw928i3xbw3an/AABc0lAv1FU4bDXtva3DbNG0a?dl=0),其中包含一个示例输入文件(实际上将被读入我的程序的文件),一个文件是如何应正确打印信息,然后显示一个文件,显示当前输出与未完成程序的相似之处。
另外,下面是我对该程序的所有代码......它不是很长。如果有人能就如何解决这个问题提出一些建议,我将非常感激。如果我能提供其他任何信息,请告诉我。
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.nio.file.Paths;
import java.nio.file.Files;
public class Processor {
private String[] finalArray;
private int numberOfCpt;
private int quantity;
private int i = 1;
private int length;
private int length1;
private int lineLength;
private HashMap<Integer, LinkedList<String>> map = new HashMap<Integer,
LinkedList<String>>();
private String[] columns;
public Processor() {
finalArray = new String[0];
}
public void readFile(String fileIn) throws IOException {
String fileName = fileIn;
Files.lines(Paths.get(fileName)).forEach(
s -> {
columns = s.split("\t");
Integer key = Integer.parseInt(columns[0]);
if (!map.containsKey(key)) {
map.put(key, new LinkedList<String>());
}
map.get(key).add(columns[1]);
});
}
public String generateReport() {
String output = "";
String line1 = "";
String output1 = "";
for (int c = 0; c < 15000; c++) {
if (map.get(c) == null) {
System.out.print("");
}
else {
for (int z = 0; z < 1; z++) {
output1 += "If ";
output1 += "IsCPT" + "(\""
+ map.get(c).toString().replace(" ", "")
+ "\"" + ")";
output1 += " Then\n If Quantity > " + c +
" AND Allowance >"
+ " 0.0 Then \n HoldBill(\"MUE Edits\")"
+ "\n End If\n";
if (c >= 1) {
output1 += "Else";
}
if (output1.contains("[")) {
output1 = output1.replace("[", "");
}
if (output1.contains("]")) {
output1 = output1.replace("]", "");
}
output = output1;
}
}
}
return output;
}
private static ArrayList<String> charLimiter(String input, int limit) {
ArrayList<String> list = new ArrayList<>();
String[] parts = input.split(",");
StringBuilder sb = new StringBuilder();
for (String part : parts) {
if (sb.length() + part.length() > limit) {
list.add(sb.toString().substring(0, sb.toString().length()));
sb = new StringBuilder();
}
sb.append(part + ",");
}
if (sb.length() > 0) {
list.add(sb.toString());
}
return list;
}
}