Java 这个代码怎么了? 公共类大型机扩展JFrame{ 列表等级=新的ArrayList(); 列表字符=新的ArrayList(); List charsToString=new ArrayList(); 双tempsall=0; 内部评级=0; 边框红线=BorderFactory.createLineBorder(Color.red), greenLine=BorderFactory.createLineBorder(Color.green); JLabel等级标签=新JLabel(“:Normale Arbeiten hier Noten durch,trennen!Klassenarbeit hier:”); JLabel输出=新JLabel(“注:”); JTextField normalGrades=新的JTextField(20); JTextField bigGrade=新的JTextField(20); JButton calc=新JButton(“注意berechnen!”); 公共静态void main(字符串[]args){ 新主机(); } 公共主机(){ 超级(“Noten ausrechnen”); 设置大小(1000200); 可设置大小(假); setDefaultCloseOperation(关闭时退出); setLayout(新的BorderLayout()); bigGrade.Setboorder(红线); 正常等级。订单(绿线); 添加(计算,边界布局。页面_开始); 添加(普通坡度、边界布局、直线起点); 添加(等级标签、边框布局、中心); 添加(bigGrade,BorderLayout.LINE_END); 添加(输出,边框布局。页面_结尾); setVisible(真); calc.addActionListener(新ActionListener(){ @凌驾 已执行的公共无效操作(操作事件e){ 对于(int i=0;i

Java 这个代码怎么了? 公共类大型机扩展JFrame{ 列表等级=新的ArrayList(); 列表字符=新的ArrayList(); List charsToString=new ArrayList(); 双tempsall=0; 内部评级=0; 边框红线=BorderFactory.createLineBorder(Color.red), greenLine=BorderFactory.createLineBorder(Color.green); JLabel等级标签=新JLabel(“:Normale Arbeiten hier Noten durch,trennen!Klassenarbeit hier:”); JLabel输出=新JLabel(“注:”); JTextField normalGrades=新的JTextField(20); JTextField bigGrade=新的JTextField(20); JButton calc=新JButton(“注意berechnen!”); 公共静态void main(字符串[]args){ 新主机(); } 公共主机(){ 超级(“Noten ausrechnen”); 设置大小(1000200); 可设置大小(假); setDefaultCloseOperation(关闭时退出); setLayout(新的BorderLayout()); bigGrade.Setboorder(红线); 正常等级。订单(绿线); 添加(计算,边界布局。页面_开始); 添加(普通坡度、边界布局、直线起点); 添加(等级标签、边框布局、中心); 添加(bigGrade,BorderLayout.LINE_END); 添加(输出,边框布局。页面_结尾); setVisible(真); calc.addActionListener(新ActionListener(){ @凌驾 已执行的公共无效操作(操作事件e){ 对于(int i=0;i,java,swing,Java,Swing,第37行的代码(calc.addActionListener(新ActionListener()) 到第59行(最后第二个}) 似乎没有正确读取字符串。。。 我不知道为什么。。。 假设代码将它从普通字符串获得的字符串转换为int 但它什么也没做。。 但我也没有发现错误…我认为else返回;是该行导致了问题。请试运行该行以获取值,并检查是否可以识别问题。您应该重新考虑以下事项: public class MainFrame extends JFrame { List<Integer>

第37行的代码(calc.addActionListener(新ActionListener()) 到第59行(最后第二个}) 似乎没有正确读取字符串。。。 我不知道为什么。。。 假设代码将它从普通字符串获得的字符串转换为int 但它什么也没做。。
但我也没有发现错误…

我认为else返回;是该行导致了问题。请试运行该行以获取值,并检查是否可以识别问题。您应该重新考虑以下事项:

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);

        }
    });
}
}

您似乎无法处理
grades.size()
为0的情况,这可能会使您的程序崩溃。

如果
语句:

tempSmall /= grades.size();
为此:

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从
for
循环的中间返回
。添加一个try catch,然后在此处粘贴errortempSmall/=grades.size();如果grades为空?
chars.get(I).等于(“1”)
永远不会是真的-
Char
String
=“1”
而不是
.equals
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()));
}