62,614
社区成员
发帖
与我相关
我的任务
分享
package com.briup.exam;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
Record rd = new Record();
BufferedReader br = new BufferedReader(new FileReader("4.txt"));
String s;
String money = "";
String where = "";
while ((s = br.readLine()) != null) {
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
rd.setPayNumber(arr[0] - 48);
} else if (!Character.isDigit(arr[i])) {
where += arr[i];
} else {
money += arr[i];
}
}
rd.add(Integer.parseInt(money));
rd.setPayWhere(where);
rd.setPayMoney(Integer.parseInt(money));
System.out.println(rd.toString());
where = "";
money = "";
}
rd.print();
br.close();
}
}
class Record {
private int payNumber;
private String payWhere;
private int payMoney;
private int sum;
public Record() {
}
public Record(int payNumber, String payWhere, int payMoney) {
this.payMoney = payMoney;
this.payNumber = payNumber;
this.payWhere = payWhere;
}
public int getPayNumber() {
return payNumber;
}
public void setPayNumber(int payNumber) {
this.payNumber = payNumber;
}
public String getPayWhere() {
return payWhere;
}
public void setPayWhere(String payWhere) {
this.payWhere = payWhere;
}
public int getPayMoney() {
return payMoney;
}
public void setPayMoney(int payMoney) {
this.payMoney = payMoney;
}
public void add(int payMoney) {
sum += payMoney;
}
public void print() {
System.out.println("本次消费总额: " + sum);
}
@Override
public String toString() {
return payNumber + "." + payWhere + " " + payMoney;
}
}
抱歉,今天周日没有及时查看论坛,晚上跑完步后看到了lz的回复,亲自测试了一下,遇到了几个小问题,现在都解决了,你看一下和你想要的效果一样么?
代码中我用的不是split分隔字符串,而是把字符串转换为字符数组,然后取数据,这其中还有一些问题我考虑到了,但是还没想到解决方案,所有就先把目前的成果给你看一下,是否满足你的功能需求(我提到的问题是:消费去向中可能也存在数字,比如58同城会员注册,双11买衣服……如果这些字符在你的文件里,可能取值会影响,不过我会继续考虑不足的情况,尽量做到没有bug)