Java 错误的计数结果

Java 错误的计数结果,java,Java,我正在写一个程序,计算每个班级(音乐、艺术、戏剧、体育)的学生总数。如果我有三个学生,其中两个参加艺术课,一个参加音乐课,结果应该是:艺术2和音乐1。我得到了一个错误的结果 评论:音乐课由第一名代表,艺术课由第二名代表 结果: 插入与会者人数: 3. 在课堂上插入学生: 2. 班上学生:2 总数:1 班上学生:4 总数:0 在课堂上插入学生: 2. 班上学生:2 总数:3 班上学生:4 总数:1 在课堂上插入学生: 1. 班上学生:1 总数:1 班上学生:4 总数:2 我的代码: 导入java.

我正在写一个程序,计算每个班级(音乐、艺术、戏剧、体育)的学生总数。如果我有三个学生,其中两个参加艺术课,一个参加音乐课,结果应该是:艺术2和音乐1。我得到了一个错误的结果

评论:音乐课由第一名代表,艺术课由第二名代表

结果:

插入与会者人数: 3. 在课堂上插入学生: 2. 班上学生:2 总数:1 班上学生:4 总数:0 在课堂上插入学生: 2. 班上学生:2 总数:3 班上学生:4 总数:1 在课堂上插入学生: 1. 班上学生:1 总数:1 班上学生:4 总数:2

我的代码:

导入java.util.Scanner; 公共课集体活动 { 公共静态void main()

{
扫描仪间隙=新扫描仪(System.in);
System.out.println(“插入参与者人数:”);
int participantNo=GActivity.nextInt();//插入参与者人数
int music=1;int art=2;int THERATE=3;int sport=4;//用数字表示每个班级。
int countM=0;//此变量包含音乐课的参与者人数。
int countA=0;//此变量包含艺术课的参和人数。
int countT=0;//此变量包含戏剧课的参与者人数。
int countS=0;//此变量包含体育课的参与者人数。
对于(int i=0;i
您缺少大括号!您的代码的有效功能如下:

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
的值仍然被更改,导致下一次迭代产生错误的结果。

不要在输出语句中增加内容

System.out.println("Total:"+countS++);
正如答案中所述,在打印语句中有两个增量,一个是无意中增加的。这样做几乎总是一个坏主意。这就是为什么

 int i = 0;  // the value of i is zero
 System.out.println(i++); // prints the value zero, but the value of i is one

你期待什么?还有,当p==musix时,你将countM增加两次。我编辑了代码和结果,并取消了其他人应用于你的代码和结果的格式。嗨,音乐课的学生总数应该是2而不是3。我在代码中的位置?不要增加计数器两次。嗨,我根据你的要求更改了代码根据你的建议,我仍然得到了陈旧的结果。那么我可以看看你当前的代码吗?粘贴时尽量不要破坏格式!我还有一个问题,每个Calss最多应该包含20名学生。我喜欢计算每个班级的空间数,例如,如果我有60名学生,20名艺术和40名运动,结果必须是:一个班级1个房间rt和2间运动室。我怎么做?你能详细说明这将如何解决问题吗?
System.out.println("Total:"+countS++);
 int i = 0;  // the value of i is zero
 System.out.println(i++); // prints the value zero, but the value of i is one