[英]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中int
是int
而boolean
是其自身的类型。
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.