【问题标题】:add elemets to array using { ? : }使用 { 向数组添加元素? : }
【发布时间】:2022-01-20 03:20:54
【问题描述】:
    int res[] = new int[]{(num1< num2 ? num1, num2 : num2 , num1)};

我正在尝试将两个整数插入一个数组! 元素应该更小,第二个元素应该更大。 arrays.sort() 不是好主意!; 已知简单的旧技术我需要像三元这样的新解决方案!

如何在使用三元运算符进行检查时插入两个数组? 这是否可以在 {} 中使用三元同时将元素添加到数组中。编译器能理解我想要做什么吗?

在日食中我得到:

这一行有多个标记

  • 标记“,”的语法错误。预计
  • num1 的原始类型 int 没有字段 num2
  • 标记“,”的语法错误。预计

【问题讨论】:

  • BTW Arrays.sort() 可能与 Java 1.2 一样古老(not Java 12) - 数组初始化器可能是相同的年龄(更常见的是写 int[] res int res[] 在 Java 中)-我想知道 Math.minMath.max 是否也被认为是现代的解决这个问题

标签: java arrays sorting conditional-operator


【解决方案1】:

您可以执行以下任一操作:

int res[] = new int[]{Math.min(num1, num2), Math.max(num1, num2)};

int res[] = num1 < num2 ? new int[]{num1, num2} : new int[]{num2, num1};

【讨论】:

    【解决方案2】:

    这样试试

    int res[] = new int[]{Math.min(num1, num2), Math.max(num1, num2)};
    

    【讨论】:

      【解决方案3】:

      条件表达式(三元)由一个条件和两个子表达式 (JLS Chapter 15.25) 组成。

      在 Java 中,片段 num1, num2num2, num1 不是有效的表达式。逗号, 在Java 中只是一个分隔符,不像CJavaScript,其中逗号, 也可以是一个运算符。

      请注意,即使在逗号 , 可以充当运算符(C、C++、JavaScript)的语言中,您的代码片段也不会产生预期的结果(Comma operator (,) 的 JavaScript 文档,在 C 中效果是相同的):

      逗号运算符 (,) 计算其每个操作数(从左到右)并返回最后一个操作数的值。

      因此,在 JavaScript 或 C 中使用类似于您的实验的东西会产生一个长度为 1 的数组,其中包含两个值中较大的一个。

      【讨论】:

        【解决方案4】:

        这也可以:

        int[] res = new int[] {(a<b ? a : b), (a>b? a : b)};
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-03
          • 1970-01-01
          • 2012-03-23
          • 1970-01-01
          • 1970-01-01
          • 2011-08-11
          • 2015-09-02
          相关资源
          最近更新 更多