繁体   English   中英

不能将Int转换为布尔值吗? 将代码从C转换为Java

[英]Int cannot be converted to boolean?? converting code from C to Java

我有一个代码要转换为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);
        }
    }
}

有人可以解释一下吗? 多谢你们 :)

解决此问题的2种方法:

1)使用if (k != 0) ,因为在java中intintboolean是其自身的类型。

2)话虽如此,为什么不将k更改为布尔值呢? 您正在使用它进行布尔检查,并且它仅从0变为1,因此,如果您实际使用布尔值,它将更容易阅读。

例如:

boolean k = true;

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

// print code
if (k) ...

您对错误消息不了解? if(k)在Java领域没有任何意义。 您是否打算编写if(k != 0)来测试非零值?

与C语言不同,在Java中,不会在boolean中隐式转换int

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

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

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

应该是这样的

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

在Java中,布尔值是true还是false。 在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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM