【问题标题】:Int cannot be converted to boolean?? converting code from C to JavaInt 不能转换为布尔值??将代码从 C 转换为 Java
【发布时间】:2015-05-13 14:06:50
【问题描述】:

我有一个要转换成 Java 的代码,我是编程新手,但我已经在这两个 PL 上做了一些工作,虽然我不明白为什么会出现这个错误

原来的C代码是:

#include <stdio.h>
#include <conio.h>

int main () {
    int i, j, k;
    for (i=1; i<=59; i++) {
        k = 1;
        for (j=2; j<i; j++)
            if (i % (j*j) == 0) k = 0;
        if (k) printf ("%d\n", i);
    }
    printf("%d",i);
    getch();
}

我转换后的 Java 代码:

import java.util.*;
public class squarefree {

    public static void main(String[] args) {
        int i, j,k;
        for(i=1; i<60; i++){
            k=1;
            for(j=2; j<i; j++){
                if(i % (j*j) == 0) 
                    k=0;
                if(k) System.out.println(i);
            }
            System.out.println(i);
        }
    }
}

谁能解释一下?谢谢大家:)

【问题讨论】:

  • 添加了我的评论作为答案,而不是一些额外的细节。

标签: java c printing int boolean


【解决方案1】:

解决此问题的两种方法:

1) 使用if (k != 0),因为在Java 中intint,而boolean 是它自己的类型。

2) 话虽如此,为什么不将k 更改为布尔值呢?您将它用于布尔检查,它只会从 0 变为 1,因此如果您实际使用布尔值,它会更容易阅读。

例如:

boolean k = true;

// your code here
    // your ifstatement to change k
    k = false;

// print code
if (k) ...

【讨论】:

    【解决方案2】:

    您对错误消息有什么不明白的地方? if(k) 在 java 领域没有任何意义。您的意思是写if(k != 0) 来测试非零值吗?

    【讨论】:

      【解决方案3】:

      与 C 中的不同,int 不会在 Java 中的 boolean 中隐式转换。

      你只需要写if( k != 0 ) :)

      【讨论】:

        【解决方案4】:

        C 中,您可以将intboolean 进行比较,并且任何非零值都被认为是TRUE。在 Java 中,情况并非如此。这个

        if(k) System.out.println(i);
        

        应该是这样的

        if(k != 0) System.out.println(i);
        

        【讨论】:

          【解决方案5】:

          在 Java 中,布尔值要么是真要么是假。在 C 中,int 代表布尔类型,true 为非零,false 为零。所以你要找的是:

          public static void main(String[] args) {
              int i, j;
              boolean k;
          
              for(i=1; i<60; i++){
                  k=true;
                  for(j=2; j<i; j++){
                      if(i % (j*j) == 0) 
                          k=false;
                  }
                  if(k) System.out.println(i);
              }
              System.out.println(i);
          }
          

          【讨论】:

          • 感谢大家的努力,我让它运行起来了,但由于某种原因,它似乎不会产生与我的 C 程序相同的结果。不过我会想办法的
          猜你喜欢
          • 2012-02-25
          • 2011-04-17
          • 2015-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-26
          • 1970-01-01
          相关资源
          最近更新 更多