我对java很新,我不知道为什么这段代码没有编译。它有时也不会返回我的结果。有什么建议吗?
public static char isPrime(int x)
{
for(int y=2;y<x;y++)
char result = 'r';
if(x%y==0)
result = 't';
else
result = 'f';
return result;
}
或
public static char isPrime(int x)
{
char result = 'r';
for(int y=2;y<x;y++)
if(x%y==0)
result = 't';
else
result = 'f';
return result;
}
答案 0 :(得分:0)
你需要在for
语句中加上括号,否则只需要第一行
您的错误可能是y
在您使用时超出范围
您还必须在for循环之外声明result
,原因与范围相同
public static char isPrime(int x)
{
char result = 'r';
for(int y=2;y<x;y++)
{
if(x%y==0)
result = 't';
else
result = 'f';
}
return result;
}
答案 1 :(得分:0)
如果您使用大括号,您的代码将如下所示:
public static char isPrime(int x) {
for(int y=2;y<x;y++) {
char result = 'r';
}
if(x%y==0) {
result = 't';
}
else {
result = 'f';
}
return result;
}
如您所见,变量y和结果仅在for循环中可见
答案 2 :(得分:0)
The braces after a for-statement or if-statement are optional,但在该行之后可能只有一个声明。
在第一种情况下,result
只在for
的范围内定义。如果您尝试在别处引用它,它将不存在(导致范围问题)。
令人惊讶的是,你的第二个案例将起作用 - 在for或if之后的每个陈述都是它自己的陈述。
为了便于阅读和提高可靠性,鼓励强烈鼓励使用for语句和if语句。否则,您的代码将非常脆弱。