我是编程新手。我正在学习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);
我为每个课程编写了相同的代码,这也困扰着我,因为我想要更高效的程序。
答案 0 :(得分:-1)
我不确定我100%理解你的问题。但这是我的想法。您可能需要"默认"在"开关盒"当用户键入其他成绩以外的其他内容时的结构。
顺便说一下,你粘贴的代码末尾有两个额外的花括号。我以为你刚刚把它贴错了。