Java 循环不会添加总计

Java 循环不会添加总计,java,Java,制作一本适用于一个学生的成绩册,它以学生的名字作为输入。然后他们被要求将分数分为三类:家庭作业、测验和测试。每个类别的分数都将取平均值,最后,公式“最终平均值=0.25*家庭作业平均值+0.25QuizAvg+0.50TestAvg=65 一切都正常,但-1并没有结束这个过程!令人沮丧 import java.util.Scanner; public class Assignment3 { public static void main( String[] args ) { S

制作一本适用于一个学生的成绩册,它以学生的名字作为输入。然后他们被要求将分数分为三类:家庭作业、测验和测试。每个类别的分数都将取平均值,最后,公式“最终平均值=0.25*家庭作业平均值+0.25QuizAvg+0.50TestAvg=65

一切都正常,但-1并没有结束这个过程!令人沮丧

import java.util.Scanner; 

public class Assignment3

{
public static void main( String[] args ) 
{ 
    Scanner input = new Scanner( System.in );

    int homeworkGrades;
    int quizGrades;
    int testGrades;
    int choice;
    int total;
    double average;
    String name;

    total = 0;
    homeworkGrades = 0;

        System.out.println( "Enter 1 or 2: \n 1 - Average grades \n 2 - Quit" ); 
        choice = input.nextInt();

        if ( choice == 1 ) {
            System.out.println( "Enter the students name" );
            name = input.next();



            System.out.println( " What would you like to do? \n 1 - Homework grades \n 2 - Quiz grades \n 3 - Test grades " );
            choice = input.nextInt();

            {

                while ( choice == 1 ) {
                    System.out.println( "Enter a homework grade. Press -1 when finished" );
                    homeworkGrades += input.nextInt();

                    if ( homeworkGrades != -1 ) //it's something going on right here :s

                    if ( homeworkGrades == -1 )
                        System.out.println("Total for homework grades is " + homeworkGrades );      
                }
            }
        }

    else if ( choice == 2 ) {
        System.out.println( "Exiting program" );
    }

    else {
        System.out.println( "Invalid response, exiting program." ); 
    }       
}
}
(家庭作业成绩==-1)
将始终为false。这就是代码不起作用的原因

将代码更改为:

while ( choice == 1 ) {
    int val = -2;
    System.out.println( "Enter a homework grade. Press -1 when finished" );
    while (val != -1) {
        val = input.nextInt();
        homeworkGrades += val;
    }
    System.out.println("Total for homework grades is " + homeworkGrades );
}
您的代码中有
if(家庭作业成绩!=-1)
,后面紧跟着
if(家庭作业成绩==-1)
-这可能不会实现您希望它执行的操作


我建议您在if语句周围始终使用大括号,并使用适当的代码缩进来避免类似的错误-在通读中检测它们会变得容易得多。

代码包含以下循环条件:

while(choice==1)
->如果choice值为1,则thr将是无限循环

首先更新并添加括号

if ( homeworkGrades != -1 )
{
 // Add ..
}
if ( homeworkGrades == -1 )
{
   System.out.println("Total for homework grades is " + homeworkGrades );   
}   

再次检查代码,它有一个缺陷。假设我输入这个
90,86,50,-1
。家庭作业成绩现在是225,而不是你想象中的-1。我如何才能使它达到如果他们输入-1,那么它将结束,向他们显示总数,并允许他们移动到你需要的2个变量上,一个用于成绩总数,另一个用于循环条件。现在它们是一样的。这很有效,谢谢!你所做的只是在while内创建一个整数?是的。当用户键入值时,只要值不是-1,你就需要将其添加到家庭作业分数中。只要的概念转化为更新while循环内的变量。@takendark提到了第二个要点:你需要两个变量。好的,谢谢!我还可以问一下,为什么设置int val=-2?