问题
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