【发布时间】:2015-10-22 11:48:57
【问题描述】:
我在使用 Java 语法时遇到了一些问题。我试着写一个质数检查,效果很好
public static boolean isPrime(int n) {
boolean out;
if (n < 2)
out = false;
else if (n == 2)
out = true;
else if (n % 2 == 0)
out = false;
else {
double sqrtN = Math.sqrt(n);
for (int i = 3; ; i += 2) {
if (i > sqrtN)
return out = true;
else if (n % i == 0)
return out = false;
}
}
return out;
}
现在我想写得更简洁:去掉变量声明out并使用ternary代替if。这是我目前所拥有的:
public static boolean isP(int n) {
return
(n < 2) ? false :
(n == 2) ? true :
(n % 2 == 0) ? false : {
double sqrtN = Math.sqrt(n);
for (int i = 3; ; i += 2)
if (i > sqrtN)
return true;
else if (n % i == 0)
return false;
}
}
我不知道如何处理块语句
{
double sqrtN = Math.sqrt(n);
for (int i = 3; ; i += 2)
if (i > sqrtN)
return true;
else if (n % i == 0)
return false;
}
我可以在: 之后加入这个吗?如果我在这里没有遗漏什么,那么循环内的三元是无稽之谈/无论如何都不可能,所以我在那里使用了if/else。
那么最外面的return显然缺少分号,我不知道该放在哪里。
希望我的意图得到传达,那么我怎样才能让我的第二个解决方案发挥作用?你有没有进一步的改进/建议我如何写得更好?
【问题讨论】:
标签: java loops return syntax-error ternary-operator