【发布时间】:2020-06-11 01:43:07
【问题描述】:
我正在编写一个 Java 字符串格式化程序,我认为我让它变得比它可能更复杂? 我有一个文件列出了一个商店:
"100|Pete's Pizza Palace|George Smith|200"
"400|Pete's Pizza Palace|George Smith|30"
"320|Pete's Pizza Palace|George Smith|-13"
"310|Pete's Pizza Palace|John Smith|2"
输出应该是:“Pete's Pizza Palace|George Smith|217,Pete's Pizza Palaca|John Smith|2”
因此,在第一部分中删除了商店编号,然后是相同商店的附加利润。我似乎没有放入地图以获取相同密钥字符串的总和。
static String fileRecords(String[] records) {
int len = records.length;
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> profitTotals = new HashMap<String, Integer>();
String[] record = new String[len];
int index = 0;
int[] sums = new int[len];
StringBuilder sb = new StringBuilder();
StringBuilder tempStringBuilder = new StringBuilder();
int totalSum = 0;
for(int i = 0;i<len;i++) {
record = records[i].split("\\|");
String recEntryNameString = tempStringBuilder.append(record[1]).append("|").append(record[2]).append("|").toString();
map.put(recEntryNameString, Integer.parseInt(record[3]));
profitTotals.put(recEntryNameString, Integer.parseInt(record[3]));
Iterator iter = map.entrySet().iterator();
for (Map.Entry<String, Integer> entries : map.entrySet()) {
for(Map.Entry<String, Integer> sumNum : profitTotals.entrySet()) {
if(!entries.getKey().equals(sumNum.getKey())) {
totalSum = entries.getKey() + sumNum.getKey();
map.replace(recEntryNameString, entries.getKey(), totalSum);
profitTotals.remove(recEntryNameString);
}
}
}
}
Iterator<String, Integer> iter = map.entrySet().iterator();
while(iter.hasNext()) {
Map.Entry<String, Integer> entry = iter.next();
if(iter.hasNext()==true)
sb.append(entry.getKey()).append(entry.getValue()).append(",");
else
sb.append(entry.getKey()).append(entry.getValue());
}
return sb.toString();
}
我得到的输出非常接近,但又在寻找正确的格式
Pete's Pizza Palace|George Smith|Pete's Pizza Palace|George Smith|Pete's Pizza Palace|George
Smith|87,Pete's Pizza Palace|George Smith|100,Pete's Pizza Palace|George Smith|Pete's Pizza
Palace|George Smith|123,
【问题讨论】:
-
您应该考虑在代码中添加间距和 cmets。它可以为可读性创造奇迹。
-
可能有更简单的方法,很快就会尝试。
标签: java string parsing hashmap format