int不能转boolean??将代码从 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);
}
}
}
有人可以解释一下吗?谢谢你们:)
您对错误信息有什么不理解的地方? if(k)
在 java 地区没有任何意义。您的意思是写 if(k != 0)
以测试非零值吗?
与 C 不同,int
不会在 boolean
中隐式转换为 Java。
你只需要写 if( k != 0 )
:)
在 C
中,您可以将 int
与 boolean
进行比较,任何非零值都被视为 TRUE。在 Java 中,情况并非如此。这个
if(k) System.out.println(i);
应该是这样的
if(k != 0) System.out.println(i);
在 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);
}
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) ...
我有一个要转换成 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);
}
}
}
有人可以解释一下吗?谢谢你们:)
您对错误信息有什么不理解的地方? if(k)
在 java 地区没有任何意义。您的意思是写 if(k != 0)
以测试非零值吗?
与 C 不同,int
不会在 boolean
中隐式转换为 Java。
你只需要写 if( k != 0 )
:)
在 C
中,您可以将 int
与 boolean
进行比较,任何非零值都被视为 TRUE。在 Java 中,情况并非如此。这个
if(k) System.out.println(i);
应该是这样的
if(k != 0) System.out.println(i);
在 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);
}
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) ...