【问题标题】:Simple Java Modulus Question简单的 Java 模数问题
【发布时间】:2011-04-08 15:53:47
【问题描述】:

我有以下代码:

for(int i=0;i<=100;i++) {
            if(i % 11) {
                System.out.println(i);
            }
        }

我只希望代码打印能被 11 整除的数字。但它告诉我:类型不匹配:无法从 int 转换为 boolean

我做错了什么?

【问题讨论】:

  • 您收到此错误的原因是您的条件i % 11 返回一个int 值,但if 语句需要一个boolean。请参阅下面的答案。

标签: java modulus type-mismatch


【解决方案1】:

你需要把它变成这样的条件:

if(i % 11 == 0) {

【讨论】:

    【解决方案2】:
    if((i % 11) == 0)
    

    应使用== 运算符进行检查。 i%11 返回一个 int,默认情况下不能转换为 boolean 并且编译器会抱怨它。

    【讨论】:

      【解决方案3】:

      这样做

      if(i % 11==0) {
           System.out.println(i);
      }
      

      % 运算符返回一个int,而if() 只能检查boolean 值。

      【讨论】:

        【解决方案4】:

        您必须检查模数是否为零(意味着它可以被 11 整除):

        if(i % 11 == 0) //...
        

        【讨论】:

          【解决方案5】:

          试试这个(我已经改变了你的条件):

          for(int i=0;i<=100;i++) {
                  if((i % 11) == 0) {
                      System.out.println(i);
                  }
              }
          

          【讨论】:

            【解决方案6】:

            if 表达式需要一个布尔值作为条件传递。

            试试这个:(i % 11) == 0

            完整代码:

            for(int i=0; i<=100; i++) {
                if( (i % 11)==0 ) {
                    System.out.println(i);
                }
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-01-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-25
              • 1970-01-01
              相关资源
              最近更新 更多