因此,此代码要求为10名学生输入1表示通过或2表示失败,如果用户输入无效数字则显示错误。这里的逻辑错误是例如所有10个学生都通过,输出应该是“通过:10失败:0”。但是,如果我错误输入一次错误,将出现错误信息,但输出将是“通过:9失败:0“甚至认为所有10名学生都通过了。
import javax.swing.JOptionPane;
public class pass {
public static void main(String[] args) {
int passes = 0;
int failures = 0;
int result;
for (int studentCounter = 1; studentCounter <= 10; studentCounter++) {
String input = JOptionPane.showInputDialog("Enter (1=pass, 2= fail)");
result = Integer.parseInt(input);
if (result == 1) {
passes = passes + 1;
} else if (result == 2) {
failures = failures + 1;
} else if ((result != 1) && (result != 2)) {
JOptionPane.showMessageDialog(null, "Error input 1 or 2");
}
}
JOptionPane.showMessageDialog(null, "Passed:" + passes + "Failed:" + failures);
System.exit(0);
}
}
答案 0 :(得分:2)
这是正确的,因为9已经过去而0失败了。任何组都不会计入错误。
答案 1 :(得分:1)
您可以更新以下代码以删除逻辑错误:
import javax.swing.JOptionPane;
public class pass{
public static void main(String [] args){
int passes=0;
int failures=0;
int result;
for(int studentCounter = 1; studentCounter<=10;){
String input = JOptionPane.showInputDialog("Enter (1=pass, 2= fail)");
result = Integer.parseInt(input);
if(result==1){
passes = passes + 1;
studentCounter++
}else if(result==2){
failures = failures +1;
studentCounter++
} else {
JOptionPane.showMessageDialog(null,"Error input 1 or 2");
}
}
JOptionPane.showMessageDialog(null,"Passed:"+passes+"Failed:"+failures);
System.exit(0);
}
}
答案 2 :(得分:1)
问题在于你的if else逻辑:
这个For
循环会增加条件else if((result!=1)&&(result!=2))
中的整数,这意味着,例如,如果你输入10或1或2以外的输入,你将获得0次传递和0次失败的结果。 ..但你的循环结束了......
我建议你另外使用Oracle Java Code Conventions ...失败++;通行证++;
答案 3 :(得分:1)
您可以尝试使用以下代码。在无效输入时减少学生反击。
import javax.swing.JOptionPane;
public class pass{
public static void main(String [] args){
int passes=0;
int failures=0;
int result;
for(int studentCounter = 1; studentCounter<=10; studentCounter++){
String input = JOptionPane.showInputDialog("Enter (1=pass, 2= fail)");
result = Integer.parseInt(input);
if(result==1){
passes++;
}else if(result==2){
failures++;
} else if((result!=1)&&(result!=2)) {
studentCounter--;
JOptionPane.showMessageDialog(null,"Error input 1 or 2");
}
}
JOptionPane.showMessageDialog(null,"Passed:"+passes+" Failed:"+failures);
System.exit(0);
}
}
答案 4 :(得分:0)
循环执行10次。但是,如果发生错误,您的代码既不会增加passes
也不会增加failures
,因此passes
+ failures
始终是没有失败的输入数量,并始终&lt; = 10。
如果你想得到10个结果,你必须确保正好有10个正确的输入。 您可以通过在正确输入上增加结果计数器直到达到10来实现此目的:
int studentCounter = 0;
while(studentCounter < 10 ){
String input = JOptionPane.showInputDialog("Enter (1=pass, 2= fail)");
result = Integer.parseInt(input);
if(result==1){
passes++;
studentCounter++;
}else if(result==2){
failures++;
studentCounter++;
} else {
JOptionPane.showMessageDialog(null,"Error input 1 or 2");
}
}