我最近编程并遇到了一个问题? :操作数。这是我的代码。
Random rand = new Random();
for(int x = 0; x < 3; x++) {
rand.nextInt(1) == 0 ? vertShip(board) : horizShip(board);
}
我的编译器抛出一个错误,指出该行的左侧(rand.nextInt(1)== 0)必须是一个变量。我尝试过像
这样的变种 Random rand = new Random();
int a = rand.nextInt(1);
for(int x = 0; x < 3; x++) {
a == 0 ? vertShip(board) : horizShip(board);
}
或左侧的陈述,但它们无法解决问题。有人能帮助我吗?
答案 0 :(得分:10)
并非每个表达都是一个陈述。在此处使用if
语句。请参阅Java SE 7 Java语言规范中的第14.8 Expression Statements节。
某些类型的表达式可以通过以下方式用作语句 他们用分号。
ExpressionStatement: StatementExpression ; StatementExpression: Assignment PreIncrementExpression PreDecrementExpression PostIncrementExpression PostDecrementExpression MethodInvocation ClassInstanceCreationExpression
上述每一个的表达式语句示例:
x = y;
++x;
--x
x++;
x--;
fn(); // Or donkey.fn();, etc.
new Donkey(this);
你不能做的是:
b ? f() : g();
f() + g();
但是,如果您对代码进行模糊处理,我想您可以写一下:
fn(a == 0 ? vertShip(board) : horizShip(board));
(a == 0 ? vertShip(board) : horizShip(board)).fn();
(我想。我手边没有编译器,通常不会写这样的代码。)
答案 1 :(得分:3)
编译器是对的。三元运算符返回一些内容,因此您需要将其分配给变量。
答案 2 :(得分:3)
Java不是perl。使用if语句:
if (rand.nextInt(1) == 0) {
vertShip(board);
} else {
horizShip(board);
}
你不能通过坚持三元组来构建一个函数调用语句?在前面。
答案 3 :(得分:1)
a == 0 ? vertShip(board) : horizShip(board); // is an expression
if (a == 0) vertShip(board); else horizShip(board); // is a statement
比较
if (condition)
{
execute statement(s)
}
else
{
execute statement(s)
}
使用:
expression1 ? expression2 : expression3
使用适当的构造。