Java 如何避免GPA计算器中的垃圾值?
我是编程新手。我正在学习java,正在做一个小项目,其中包括计算学生GPA 我的结果中有一个逻辑错误。用户第一次输入成绩时,结果是正确的。那他们就全是垃圾了。我试图在第一次之后清除我的变量,但当用户输入错误的等级并决定更改它时仍然存在问题。这也会导致垃圾结果Java 如何避免GPA计算器中的垃圾值?,java,combobox,project,Java,Combobox,Project,我是编程新手。我正在学习java,正在做一个小项目,其中包括计算学生GPA 我的结果中有一个逻辑错误。用户第一次输入成绩时,结果是正确的。那他们就全是垃圾了。我试图在第一次之后清除我的变量,但当用户输入错误的等级并决定更改它时仍然存在问题。这也会导致垃圾结果 Course1 = new JTextField(); Course1.setText("Course 1"); Course1.setBounds(20, 237, 86, 20); contentPane.add
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);
我为每门课程都编写了同样的代码,这也让我感到困扰,因为我想要更高效的程序 我不确定我是否100%理解你的问题。但这是我的想法。您可能需要在“switch case”结构中设置一个“default”,以便在用户键入的不是他们的成绩时使用
顺便说一句,在粘贴的代码末尾有两个额外的大括号。我以为你刚把它贴错了。什么是一年级?现在是什么时候?我的积分呢?你将它们初始化为什么?Grade1是我列表中的第一个组合框,currentHour是一个临时变量,用于存储课程的学分。我将其声明为实例变量,以便其他组合框将使用它。还有一个名为totalHours的变量来存储用户输入的总小时数,每次我都将currentHour的值添加到totalHours中。myPoints是一个用于存储已赢得分数总数的变量,它将除以最大可能分数,然后再乘以5,以从5中获得GPA。我建议您也添加代码的其余部分,因为了解代码流很重要。在声明中,您将myPoint设置为等于什么?没有。我认为默认情况下实例变量初始化为0,然后我们在方法中操作它们。请尝试在重新开始计算时将变量重新初始化为0。很抱歉,由于无法上载图像,因此缺少信息。实际上,学分和分数是组合框,用户只需选择。另外两个支架粘贴错误。它们包含itemStateChanged方法和匿名类(侦听器)