如何限制java中每行打印的字符数?

时间:2016-01-13 22:08:26

标签: java

我正在研究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;
}
}

0 个答案:

没有答案