1

私はこの問題を正しく機能させようとしています。スコアを入力するように要求され、スコアが最も高い人の名前が表示されるはずです。最後に入力したスコアを最高スコアとして取得しています。最後に入力したスコアが必ずしも最高スコアになるとは限らないという問題があります。これを修正する方法についてのアイデアをいただければ幸いです。これは宿題であり、「リストまたは配列を使用する」とは誰も言っていないので、クラスでそれをカバーしていないため、この問題に使用することは想定されていません。

       public static void main(String[] args) 
       {
            // variables
            Scanner input = new Scanner(System.in);
            int count = 0;
            int numStudents;
            double grade = 0, highestGrade = 0;
            String name = "", highName = "";

            String numGrades =
                    JOptionPane.showInputDialog
                    ("How many student grades are you entering: ");
            numStudents = Integer.parseInt(numGrades);

            //for(int count = 0; count < numStudents; count++)
            while(count < numStudents)
            {
            // prompt for the user to enter grades
            String inputName =
                    JOptionPane.showInputDialog("Enter a student name: ");
            name = inputName;
            //name = input.next(inputName);

            String inputGrade = 
                   JOptionPane.showInputDialog("What is that students grade: ");
            grade = Double.parseDouble(inputGrade);
            //grade = input.nextDouble();

            count++; 
            //if(grade < highestGrade)
            if(highestGrade > grade)
            {
                name = highName;
                grade = highestGrade;
            }
            else 
            {
                continue;
            }        
            }
            JOptionPane.showMessageDialog
                    (null, "The student with the highest score is " + name + 
                    " with a grade of " + grade);           
        }
4

2 に答える 2

3
 if(highestGrade > grade)
            {
                name = highName;
                grade = highestGrade;
            }

最高のグレードと名前を見つけたいので、上記は逆になります。

 if(grade > highestGrade )
            {
                highName = name;
                highestGrade = grade;
            }

また、見つかった値を出力します。

     JOptionPane.showMessageDialog
                 (null, "The student with the highest score is " + highName +  
                  " with a grade of " + highestGrade);        
于 2013-01-29T20:47:03.370 に答える
2

これは逆です:

if(highestGrade > grade)

する必要があります

if(highestGrade < grade)

またはより理解できるように:

if(grade > highestGrade)

編集:これも逆です...

name = highName;
grade = highestGrade;
于 2013-01-29T20:46:48.680 に答える