如何避免GPA计算器中的垃圾值?

时间:2014-03-25 06:34:26

标签: java combobox project

我是编程新手。我正在学习java并正在开发一个包含计算学生GPA的迷你项目。

我的结果中存在逻辑错误。结果在用户第一次输入成绩时是正确的。然后他们将全部垃圾。我试图在第一次之后清除我的变量,但是当用户输入错误的等级并决定更改它时仍然存在问题。这也导致垃圾结果。

Course1 = new JTextField();
    Course1.setText("Course 1");
    Course1.setBounds(20, 237, 86, 20);
    contentPane.add(Course1);
    Course1.setColumns(10);
Hours1 = new JComboBox();
    Hours1.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent event)
{

            if(event.getStateChange()==ItemEvent.SELECTED)
            {

                String h =(String) Hours1.getSelectedItem();
                currentHour=Integer.parseInt(h);
                totalHours+=currentHour;
            }
        }
    });
    Hours1.setModel(new DefaultComboBoxModel(new String[] {" ","2", "3", "4",              
            "5"}));
    Hours1.setBounds(135, 237, 39, 20);
    contentPane.add(Hours1);
Grade1 = new JComboBox();
    Grade1.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent event) {
            if(event.getStateChange()==ItemEvent.SELECTED)
            {
                String grade=(String)Grade1.getSelectedItem();
                switch(grade)
                {
                    case "A+": 
                        currentPoint=5*currentHour;

                        break;
                    case "A": 
                        currentPoint= 4.75 * currentHour;
                        break;
                    case "B+": 
                        currentPoint= 4.5 * currentHour;
                        break;
                    case "B": 
                        currentPoint= 4 * currentHour;
                        break;
                    case "C+": 
                        currentPoint= 3.5 * currentHour;
                        break;
                    case "C": 
                        currentPoint= 3 * currentHour;
                        break;
                    case "D+": 
                        currentPoint= 2.5 * currentHour;
                        break;
                    case "D": 
                        currentPoint= 2 * currentHour;
                        break;
                    case "F":
                        currentPoint= 1 * currentHour;
                        break;
                }
                myPoints=myPoints+currentPoint;
            }
        }
    });
    Grade1.setModel(new DefaultComboBoxModel(new String[] {" ","A+", "A", "B+",  
            "B", "C+", "C", "D+", "D", "F"}));
    Grade1.setBounds(204, 237, 47, 20);
    contentPane.add(Grade1);

我为每个课程编写了相同的代码,这也困扰着我,因为我想要更高效的程序。

1 个答案:

答案 0 :(得分:-1)

我不确定我100%理解你的问题。但这是我的想法。您可能需要"默认"在"开关盒"当用户键入其他成绩以外的其他内容时的结构。

顺便说一下,你粘贴的代码末尾有两个额外的花括号。我以为你刚刚把它贴错了。