0

このプログラムは、最初の有効な入力が何があっても無効であり、次に 2 番目の入力が何があっても有効であることを示しています。理由はありますか?

public class test
    {
    public static void main (String [] args)
            {
            int gradeValidity, verifiedGrade, grade, validGrade;


            grade=gradeValidity ();

            System.out.println("your total grade is"+grade);
            System.exit(0);
            }
            private static int gradeValidity ()
            {
            int gradeOne;
            boolean verifiedGrade ;

            gradeOne=ConsoleInput.readInt("Input student grade");
            verifiedGrade=((gradeOne>=0) && (gradeOne<=100));

                            do
                            {
                            System.out.println("Invalid input");
                            gradeOne=ConsoleInput.readInt("Input student grade");
                            }
                            while (!verifiedGrade);



                            return gradeOne;
                            }

            }

これに更新しました。しかし、今では比類のない(ブール値と整数)ことができます

import io.*;
public class test
    {
    public static void main (String [] args)
            {
            int gradeValidity, verifiedGrade, grade, validGrade;


            grade=gradeValidity ();

            System.out.println("your total grade is"+grade);
            System.exit(0);
            }
            private static int gradeValidity ()
            {
            int gradeOne;
            boolean verifiedGrade ;

            gradeOne=ConsoleInput.readInt("Input student grade");
            verifiedGrade=((gradeOne>=0) && (gradeOne<=100));

                            while (gradeOne!=verifiedGrade);
                            {
                            System.out.println("Invalid input");
                            gradeOne=ConsoleInput.readInt("Input student grade");
                            }




                            return gradeOne;
                            }

            }

これでもまだエラーが発生します。最初の入力は常に false で、2 番目の入力は常に true で、>0 と <100 に関係ありません。

import io.*;
public class test
    {
    public static void main (String [] args)
            {
            int gradeValidity, verifiedGrade, grade, validGrade;


            grade=gradeValidity ();

            System.out.println("your total grade is"+grade);
            System.exit(0);
            }
            private static int gradeValidity ()
            {
            int gradeOne;
            boolean  verifiedGrade;

            gradeOne=ConsoleInput.readInt("Input student grade");
            verifiedGrade=((gradeOne>=0) && (gradeOne<=100));

                            while (!verifiedGrade);
                            {
                                    System.out.println("Invalid input");
                                    gradeOne=ConsoleInput.readInt("Input student grade");
                                    verifiedGrade=((gradeOne>=0) && (gradeOne<=100));
                             }
                            return gradeOne;
                            }

            }
4

3 に答える 3

1

この特定のエラーを引き起こす行はこれです

  boolean verifiedGrade;

この行を次のように変更する必要があります

  int verifiedGrade;

他のエラーが発生しなくなるまで、すべてが正常に機能します。

于 2013-10-15T05:28:15.813 に答える
0

メソッド gradeValidity は次のようになります。

private static int gradeValidity ()
{
    int gradeOne;
    boolean verifiedGrade;

    gradeOne=ConsoleInput.readInt("Input student grade");
    verifiedGrade=((gradeOne>=0) && (gradeOne<=100));

    while (!verifiedGrade)
    {
        System.out.println("Invalid input");
        gradeOne=ConsoleInput.readInt("Input student grade");
        verifiedGrade=((gradeOne>=0) && (gradeOne<=100));
    }

    return gradeOne;
}

編集:以下のコードスニペットも試してください。その中で、非標準クラスの ConsoleInput をより多くの標準クラスに置き換えました。テスト済みで動作します。

private static int gradeValidity () throws java.io.IOException
{
    int gradeOne;
    boolean verifiedGrade;
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Input student grade");
    gradeOne=Integer.parseInt(bufferRead.readLine());
    verifiedGrade=((gradeOne>=0) && (gradeOne<=100));

    while (!verifiedGrade)
    {
        System.out.println("Invalid input");
        System.out.println("Input student grade");
        gradeOne=Integer.parseInt(bufferRead.readLine());
        verifiedGrade=((gradeOne>=0) && (gradeOne<=100));
    }

    return gradeOne;
}
于 2013-10-15T06:47:42.007 に答える
0
                while (gradeOne=!verifiedGrade)

する必要があります

                while (gradeOne!=verifiedGrade)
于 2013-10-15T05:26:37.713 に答える