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

半世苍凉 提交于 2019-12-23 03:39:08

问题


I have a code that I am converting into Java, Im new to programming but I already have done some work on both PL, although I do not understand why I get this error

The original C code is:

#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();
}

My converted Java code:

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

Can someone please explain? Thanks guys :)


回答1:


2 ways to fix this:

1) Use if (k != 0), since in java an int is an int and a boolean is its own type.

2) Having said that, why not change k to a boolean value? You're using it for a boolean check, and it only changes from 0 to 1, so if you actually use the boolean value it'll be much easier to read.

eg:

boolean k = true;

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

// print code
if (k) ...



回答2:


What don't you understand about the error message? if(k) doesn't make any sense in java-land. Did you mean to write if(k != 0) in order to test for a non-zero value?




回答3:


Unlike in C, int aren't implicitly converted in boolean in Java.

You just have to write if( k != 0 ) :)




回答4:


In C you can compare an int as a boolean and any non-zero value is considered TRUE. In Java, that is not the case. This

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

should be something like

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



回答5:


In Java a boolean is either true or false. In C, int stands in for a boolean type with true being non-zero and false being zero. So what you're looking for is:

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


来源:https://stackoverflow.com/questions/28992471/int-cannot-be-converted-to-boolean-converting-code-from-c-to-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!