在代码中,有几处错误:
1. 在`actionPerformed`方法中,`String str=new String;`应该是`String str = "";`,缺少了括号。
2. 在`actionPerformed`方法中,`str = tempstr.split(" ");`应该是`str = tempstr.split(" ");`,缺少了括号。
3. 在`Sort`方法中,`static public double Sort(Stringstr)`应该是`static public double Sort(String[] str)`,缺少了空格。
另外,为了保证代码的可读性和可维护性,建议对代码进行一些优化和改进,比如使用try-with-resources自动关闭流、使用合适的变量名等。以下是修正后的代码:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class Test05 extends JFrame implements ActionListener {
JLabel label_name, label_xuehao, label_grades;
JTextField field_name, field_xuehao, field_grades;
JTextArea area;
JButton button_add, button_baocun;
File file = null;
static int cnt = 0;
public Test05() {
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBounds(400, 200, 700, 400);
setResizable(false);
setTitle("test05");
}
public void init() {
//布局设置
area = new JTextArea(19, 62);
area.setEditable(false);
label_grades = new JLabel("成绩:");
label_name = new JLabel("姓名:");
label_xuehao = new JLabel("学号");
field_grades = new JTextField(10);
field_name = new JTextField(10);
field_xuehao = new JTextField(10);
button_add = new JButton("添加学生");
button_baocun = new JButton("操作后保存");
add(new JScrollPane(area));
JPanel panel = new JPanel();
panel.add(label_name);
panel.add(field_name);
panel.add(label_xuehao);
panel.add(field_xuehao);
panel.add(label_grades);
panel.add(field_grades);
panel.add(button_add);
panel.add(button_baocun);
setContentPane(panel);
//添加监听器
button_baocun.addActionListener(this);
button_add.addActionListener(this);
file = new File("D:\\Java\\java学习\\学校作业\\test05.txt");
//判断该文件是否在硬盘中真实存在
if (!file.exists()) {
try {
file.createNewFile();
//System.out.println("创建文件成功了");
} catch (IOException e) {
e.printStackTrace();
//System.out.println("创建文件失败了");
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_add) {
String s = "";
if (field_name.getText().isEmpty())
area.append("姓名不能为空\n");
else {
s += field_name.getText();
s += " ";
}
if (field_xuehao.getText().isEmpty())
area.append("学号不能为空\n");
else {
s += field_xuehao.getText();
s += " ";
}
if (field_grades.getText().isEmpty())
area.append("成绩不能为空\n");
else {
s += field_grades.getText();
s += "\n";
}
if (!field_name.getText().isEmpty() && !field_grades.getText().isEmpty() && !field_xuehao.getText().isEmpty()) {
try {
try (FileOutputStream fileOutputStream = new FileOutputStream("D:\\Java\\java学习\\学校作业\\test05.txt", true)) {
fileOutputStream.write(s.getBytes());
}
try (FileOutputStream fileOutputStrea2 = new FileOutputStream("D:\\Java\\java学习\\学校作业\\test05.txt")) {
fileOutputStrea2.write("".getBytes());
fileOutputStrea2.flush();
}
field_grades.setText("");
field_xuehao.setText("");
field_name.setText("");
JOptionPane.showMessageDialog(null, "添加成功", "关于", JOptionPane.INFORMATION_MESSAGE);
area.append("第" + (cnt + 1) + "个学生:" + s);
cnt++;
} catch (IOException ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "添加失败", "关于", JOptionPane.WARNING_MESSAGE);
}
}
if (e.getSource() == button_baocun) {
try {
try (Reader reader = new FileReader("D:\\Java\\java学习\\学校作业\\test05.txt")) {
StringBuilder str = new StringBuilder();
int temp = reader.read();
int i = 0;
String tempstr = "";
while (temp != -1) {
char ch = (char) temp;
if (ch != '\n')
tempstr += String.valueOf(ch);
else {
str.append(tempstr.split(" "));
i++;
tempstr = "";
}
temp = reader.read();
}
double avg = Sort(str.toString());
String s = "这些学生成绩的最大值是:" + str + ",最小值是:" + str + ",平均值是:" + avg;
JOptionPane.showMessageDialog(null, s, "计算结果", JOptionPane.INFORMATION_MESSAGE);
try (FileOutputStream fileOutputStream = new FileOutputStream("E:\\Java\\HomeWork4\\src\\FileGui\\test2.txt", true)) {
for (String tmpstr : str.toString().split(" ")) {
fileOutputStream.write((tmpstr + " ").getBytes());
fileOutputStream.write((tmpstr + " ").getBytes());
fileOutputStream.write((tmpstr + "\n").getBytes());
}
}
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
//返回的是平均值
public double Sort(String str) {
String[] arr = str.split(" ");
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (Integer.parseInt(arr[j]) > Integer.parseInt(arr[j + 1])) {
int temp = Integer.parseInt(arr[j]);
arr[j] = arr[j + 1];
arr[j + 1] = String.valueOf(temp);
}
}
}
double sum = 0;
for (String s : arr) {
sum += Integer.parseInt(s);
}
return sum / arr.length;
}
public static void main(String args[]) throws IOException {
new Test05();
}
}
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |