当前位置: 首页 > 面试题库 >

为什么我不能使用三元?操作员在两个函数调用之间进行选择?

高运诚
2023-03-14
问题内容

我最近正在编程,并使用?遇到问题。:操作数。这是我的代码。

    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);
    }

或者if语句在左侧,但不能解决问题。谁能帮助我?


问题答案:

并非每个表达式都是语句。if在此处使用声明。请参阅《 Java SE 7
Java语言规范》中的14.8表达语句。

某些类型的表达式可以在其后加上分号来用作语句。

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();

(我认为。我没有手拿的编译器,通常不会编写此类代码。)



 类似资料:
  • 我必须在两个字符串变量中进行选择--第一个具有非值。如果它们都是-那么我想退出该方法。这可以在下面的一段代码中完成: 也可以用简短的形式完成: 我正在纠结如何用 注意:我只能使用Java 8语法(所以没有)

  • 问题内容: 我有一个想法,可能是因为我正在做一些样式设计来更改单选按钮,但是我不确定。我正在设置一个onClick事件,该事件两次调用了我的函数。我已删除它以确保它没有在其他地方被触发,并且onClick似乎是罪魁祸首。 我的功能目前仅是运输选项的简单控制台日志: 如果没有任何理由可以在这里看到为什么会发生这种情况,我可以发布其余代码,但是有很多方面,我认为这与之无关,但是我认为这是一个很好的起点

  • 我试图使用命名管道在同一台机器上的服务器和客户端进程之间进行通信。服务器向客户机发送一条消息,客户机对其执行操作并返回结果,服务器应该得到结果。 这里是服务器的代码: 以下是客户端的代码: 但是在服务器代码中,在线pipeServer。WaitForPipeDrain();我得到一个ObjectDisposedException,它说“无法访问封闭管道。” 在设置sw时,我在打开的客户端代码中也会

  • 我在使用JPA在数据库(PL / SQL)表中保存(插入)记录时遇到问题。 这是我的模型类: 回购类 道类 我已经尝试了所有的方法,但仍然是相同的错误。 错误o.a.c.c.C。[.[.路径为[]的上下文中的servlet [dispatcherServlet]的[dispatcher servlet]-servlet . service()引发异常[请求处理失败;嵌套异常是Java . lang

  • 我知道string1将包含一个空字符串。我的问题是为什么像下面这样两次调用nextLine方法会出现错误: