While loop 整数和布尔不兼容类型

While loop 整数和布尔不兼容类型,while-loop,integer,boolean,While Loop,Integer,Boolean,这个程序说第一个有效输入是无效的,不管发生什么,然后第二个输入是有效的,不管发生什么。知道为什么吗 public class test { public static void main (String [] args) { int gradeValidity, verifiedGrade, grade, validGrade; grade=gradeValidity (); S

这个程序说第一个有效输入是无效的,不管发生什么,然后第二个输入是有效的,不管发生什么。知道为什么吗

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;
                            }

            }
公共类测试
{
公共静态void main(字符串[]args)
{
int等级有效性,验证等级,等级,有效等级;
等级=等级有效性();
System.out.println(“您的总成绩为”+成绩);
系统出口(0);
}
私有静态整数有效性()
{
国际一年级;
布尔校验级;
一年级=控制台输入.readInt(“输入学生成绩”);
验证等级=((等级一>=0)和&(等级一=0)和&(等级一0和=0)和&(等级一=0)和&(等级一=0)
应该是

                while (gradeOne!=verifiedGrade)

导致此特定错误的行是

  boolean verifiedGrade;
您需要将此行更改为以下内容

  int verifiedGrade;

在没有任何其他错误之前,一切都会正常运行!

方法等级有效性应如下所示:

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;
}
private static int gradeValidity()
{
国际一年级;
布尔校验级;
一年级=控制台输入.readInt(“输入学生成绩”);

verifiedGrade=((gradeOne>=0)&&&(gradeOne=0)&&&(gradeOne=0)&&&(gradeOne=0)&&&(gradeOne)当我运行时,第一个条目的任何输入都是假的,第二个条目的任何输入都是真的。你知道为什么吗?你使用的是非标准类控制台输入,其中可能有bug。我的错,我有一个“;”after”while(!verifiedGrade)感谢您的帮助您好,看起来您对StackOverflow还不熟悉--欢迎!请注意:虽然很容易猜测您可能正在使用Java,但一般来说,您应该提及您在这类问题中使用的语言。
  boolean verifiedGrade;
  int verifiedGrade;
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;
}
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;
}