public class MainFrame extends JFrame {
List<Integer> grades = new ArrayList<Integer>();
List<Character> chars = new ArrayList<Character>();
List<String> charsToString = new ArrayList<String>();
double tempSmall = 0;
int mainGrade = 0;
Border redLine = BorderFactory.createLineBorder(Color.red),
greenLine = BorderFactory.createLineBorder(Color.green);
JLabel grades_Label = new JLabel(" : Normale Arbeiten hier Noten durch , trennen ! Klassenarbeit hier : ");
JLabel output = new JLabel(" Note : ");
JTextField normalGrades = new JTextField(20);
JTextField bigGrade = new JTextField(20);
JButton calc = new JButton("Note berechnen !");
public static void main(String[] args) {
new MainFrame();
}
public MainFrame(){
super("Noten ausrechnen");
setSize(1000, 200);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
bigGrade.setBorder(redLine);
normalGrades.setBorder(greenLine);
add(calc, BorderLayout.PAGE_START);
add(normalGrades, BorderLayout.LINE_START);
add(grades_Label, BorderLayout.CENTER);
add(bigGrade, BorderLayout.LINE_END);
add(output, BorderLayout.PAGE_END);
setVisible(true);
calc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < normalGrades.getText().length(); i++){
chars.add(normalGrades.getText().charAt(i));
}
for(int i = 0; i < chars.size(); i++){
if(chars.get(i).equals("1") || chars.get(i).equals("2") || chars.get(i).equals("3") || chars.get(i).equals("4") || chars.get(i).equals("5") || chars.get(i).equals("6")){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}else{
return;
}
}
for(int i = 0; i < grades.size(); i++){
tempSmall += grades.get(i);
}
tempSmall /= grades.size();
output.setText(" Note : " + tempSmall);
}
});
}
}
第37行的代码(calc.addActionListener(new ActionListener()) 到第59行(第二个最后}) 似乎没有正确阅读字符串... 我不知道为什么...... 代码是将它从普通字符串转换为int的字符串 但它什么都没做.. 但我也没有收到错误...
答案 0 :(得分:0)
我认为别的回归;是引起问题的线。干运行以获取值并检查是否可以识别问题
答案 1 :(得分:0)
您应该重新考虑以下事项:
for(int i = 0; i < chars.size(); i++){
if(chars.get(i).equals("1") || ...) {
grades.add(Character.getNumericValue(chars.get(i).charValue()));
} else {
return; ← This line causes the method to terminate
}
}
您应该chars.get(i) == '1'
进行比较char
。
如果chars.get(i)
不是[1,6],该怎么办?你执行return;
会导致方法结束。你可能想写continue;
代替(就像没有else
)。
另一件事,你应该非常小心
tempSmall /= grades.size();
您似乎无法处理grades.size()
为0的情况,这可能导致程序崩溃。
答案 2 :(得分:0)
切换此if
声明:
if(chars.get(i).equals("1") || chars.get(i).equals("2") || chars.get(i).equals("3") || chars.get(i).equals("4") || chars.get(i).equals("5") || chars.get(i).equals("6")){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}
到此:
if(chars.get(i).equals('1') || chars.get(i).equals('2') || chars.get(i).equals('3') || chars.get(i).equals('4') || chars.get(i).equals('5') || chars.get(i).equals('6')){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}
因为您要比较Character
,而不是String
。 '
而非"
完全不同。