0

while ループで「q」を押して、ループを終了できるようにする必要があります。次に、横に成績を付けて単位時間を表示できるようにするためのコードが必要です。次に、入力した時間と成績に従って、GPA を表示する必要があります。「q」を押して終了するたびに、プログラムが停止し、何も表示されません。助けてください!

package shippingCalc;
import javax.swing.JOptionPane;

public class Gpa {

    public static void main(String[] args) {

        String input = "";
        String let_grade;
        int credits = 0;
        double letterGrade = 0;
        int course = 1;



        String greeting = "This program will calculate your GPA.";
        JOptionPane.showMessageDialog(null, greeting,"GPA Calculator",1);

            while(!input.toUpperCase().equals("Q"))
            {
                input = JOptionPane.showInputDialog(null, "Please enter the credits for class " + course );
                credits = Integer.parseInt(input);
                course ++;

                    input = JOptionPane.showInputDialog(null,"Please enter your grade for your " +credits + " credit hour class");
                    let_grade = input.toUpperCase();
                    char grade = let_grade.charAt(0);

                    letterGrade = 0;
                    switch (grade){
                    case 'A': letterGrade = 4.00;
                        break;
                    case 'B': letterGrade = 3.00;
                        break;
                    case 'C': letterGrade = 2.00;
                        break;
                    case 'D': letterGrade = 1.00;
                        break;
                    case 'F': letterGrade = 0.00;
                        break;

            }

        }
        JOptionPane.showMessageDialog(null, course++ + "\n\n It Works" + letterGrade);
    }
}
4

1 に答える 1

0

私が思う問題は、クレジットがintであり、2番目のポップアップの直後であるということです

input = JOptionPane.showInputDialog(null, 
"Please enter the credits for class " + course);

ユーザーが入力したものは何でも int クレジットに割り当てるので、文字列 q または Q を入力すると壊れます。また、while ループの条件は反復ごとに 1 回だけ (反復の開始時に) チェックされるため、その時点まで入力の値を認識できないことに注意してください。

これを修正するには、いくつかの方法があります。すばやく簡単な方法は、ユーザー入力をクレジットに割り当てる前にこのコード行を挿入することです

 if(input.equalsIgnoreCase("q")){
    continue;//will allow input to be checked immediately before assigning to credits
}
于 2013-10-22T18:22:05.200 に答える