我正在编写一个计算每个班级(音乐,艺术,戏剧,运动)学生总数的计划。如果我有3个学生,其中两个参加艺术课,一个参加音乐课,结果应该是:艺术-2和音乐-1。我得到了错误的结果。
评论:音乐类代表第一,艺术代表2。
结果:
插入参加人数: 3 在课堂上插入学生: 2 班上的学生:2 总计:1 班上的学生:4 总计:0 在课堂上插入学生: 2 班上的学生:2 总计:3 班上的学生:4 总计:1 在课堂上插入学生: 1 班上的学生:1 总计:1 班上的学生:4 总计:2
我的代码:
import java.util.Scanner; 公共类GroupActivity { public static void main()
{
Scanner GActivity=new Scanner(System.in);
System.out.println("Insert numbers of participants:");
int participantNo= GActivity.nextInt();//Insert numbers of participants
int music= 1;int art=2; int theatre= 3; int sport= 4; // Representation of each class by numbers.
int countM=0; //This variable contains the number of the participants in music class.
int countA=0; //This variable contains the number of the participants in art class.
int countT=0; //This variable contains the number of the participants in theatre class.
int countS=0; //This variable contains the number of the participants in sport class.
for(int i=0;i<participantNo;i++)
{
System.out.println("Insert student in class:");
int p= GActivity.nextInt();// // Representation of student by number.
if(p==music)
{
countM++;
System.out.println("student in class:"+music);
System.out.println("Total:"+countM++);
}
else if(p==art)
{
countA++;
System.out.println("student in class:"+art);
System.out.println("Total:"+countA++);
}
else if(p==theatre)
{
countT++;
System.out.println("student in class:"+theatre);
System.out.println("Total:"+countT++);
}
else
countS++;
System.out.println("student in class:"+sport);
System.out.println("Total:"+countS++);
}
}
}
答案 0 :(得分:1)
else
countS++;
System.out.println("student in class:"+sport);
你在那里缺少牙箍!您的代码有效地运作如下:
else {
countS++;
}
System.out.println("student in class:"+sport);
在else
之后添加大括号来解决问题。
另外,正如泰勒在评论中指出的那样,你可以两次增加音乐课程计数器,而不是每增加一名学生一次。
编辑:因为显然只是说它不够清楚,这里有一些代码可以证明:
countS++; //countS is incremented by one
System.out.println("student in class:"+sport);
System.out.println("Total:"+countS++); //countS is incremented by one AGAIN
所以你让你的学生加倍。但是,由于countS++
评估为countS
,因此第一次执行此操作时打印消息显示正确 - 但countS
的值仍然会更改,从而导致下一次迭代产生错误结果。< / p>
答案 1 :(得分:0)
不要在输出语句中增加内容
System.out.println("Total:"+countS++);
如答案中所述,在print语句中无意中有两个增量。这样做几乎总是一个坏主意。这就是为什么
int i = 0; // the value of i is zero
System.out.println(i++); // prints the value zero, but the value of i is one