【问题标题】:integer and boolean incompatible types整数和布尔不兼容的类型
【发布时间】:2013-10-15 05:24:37
【问题描述】:

这个程序说第一个有效是无效的,无论如何,然后第二个输入无论如何都是有效的。知道为什么吗?

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

            }

更新到这个。但现在我可以无与伦比(boolean 和 int)

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

            }

它仍然会出现错误,第一个输入始终为假,第二个始终为真,无论 >0 和

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

            }

【问题讨论】:

  • 嗨,看起来你是 StackOverflow 的新手——欢迎!请注意:虽然很容易猜出您可能正在使用 Java,但作为一般规则,您应该在此类问题中提及您使用的语言。

标签: while-loop integer boolean


【解决方案1】:

导致此特定错误的行是 this

  boolean verifiedGrade;

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

  int verifiedGrade;

一切都会正常运行,直到你没有任何其他错误!

【讨论】:

    【解决方案2】:

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

    编辑:也可以试试下面的代码 sn-p。在其中,我用更多的标准类替换了非标准类 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;
    }
    

    【讨论】:

    • 当我运行它时,它使第一个条目的任何输入为假,然后第二个条目的任何输入为真。知道为什么吗?
    • 你使用的是非标准类ConsoleInput,可能有bug。
    • 我的错,我有一个“;”在 "while (!verifiedGrade) 感谢您的帮助之后
    【解决方案3】:
                    while (gradeOne=!verifiedGrade)
    

    应该是

                    while (gradeOne!=verifiedGrade)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多