11解析一个文件中的价格数据,并计算总价格,点击“解析”按钮解析文件中的价格数据,在文本区中追加显示读到的文件内容和计算的总价格
文件的内容如下:
商品列表:
手机,4586元/台
笔记本,6580元/台
打印机,2568元/台
完整代码如下
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setSize(200, 200);
jFrame.setLocationRelativeTo(null);
jFrame.setLayout(new BorderLayout());
JTextArea jTextArea = new JTextArea();
JButton jButton = new JButton("解析文件数据");
JLabel jLabel = new JLabel("合计:");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
File file = new File("D:\\temp.txt");
jTextArea.setText(jTextArea.getText()+readFile(file));
double sum = Arrays.stream(jTextArea.getText().split("\n")).filter(s->s!=null&&s.trim().length()>0).collect(Collectors.summingDouble(line ->Double.parseDouble(line.split(",")[1].replace("元/台", ""))));
jLabel.setText("合计:" + sum);
}
});
jFrame.add(jLabel, BorderLayout.NORTH);
jFrame.add(jTextArea, BorderLayout.CENTER);
jFrame.add(jButton, BorderLayout.SOUTH);
jFrame.setVisible(true);
}
public static String readFile(File file) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String line = null;
while((line=br.readLine())!=null) {
sb.append("\n").append(line);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return sb.toString();
}
运行结果如下
如有帮助,请采纳,十分感谢!
这代码写个ui就可
with open("x.txt","r",encoding="utf-8") as f:
data=f.readlines()
data=data[1:]
num=sum([float(i.split(",")[-1].split("元")[0]) for i in data])
data.insert(0,"合计:{}".format(num))
print(data)