java - 交替打印第一个和最后一个数组 (Java)

标签 java arrays

我有一个作业,我必须打印一个包含这些数字的 double 组:

1, 2, 3, 4, 5, 6, 7

像这样

1, 7, 2, 6, 3, 5, 4

所以第一个和最后一个应该从数组的开头到数组的结尾交替出现。

我知道输出可能会令人困惑,但实际情况是第一个元素应该打印 (1),然后是最后一个元素 (7),然后它必须回到开头并打印以下元素 (3) ,然后回到最后在最后打印下面的元素(6)等

到目前为止,这是我的代码:

    public static void print(double [] a){
    int l = a.length-1;
    for(int i = 0; i < a.length; i++){
      if(a[i] == a[l]){
        System.out.print(a[i]);
        break;
      }
      System.out.print(a[i]+", "+a[l--]+", ");
    }
  }

代码有效,但前提是数组的大小是奇数。我想确保此代码适用于所有类型的大小数组。请帮助

最佳答案

这里的规则相当简单:

  • 打印第一个元素。
  • 打印最后一个元素。
  • 不要将同一个元素打印两次。

就数组而言,您将其视为一口大小的问题。

  • 打印第一个索引。
  • 打印最后一个索引。
  • 增加指向第一个索引的指针。
  • 将指向最后一个索引的指针递减。
  • 如果两个点相同,则 break - 你完成了。

就代码而言,它看起来像这样。请注意,在 Java 中,您可以在循环中声明多个变量并稍后在表达式中使用它们。

int[] values = {1, 2, 3, 2, 1};
// i shouldn't advance beyond the first half of the list.
// j shouldn't advance beyond the second half of the list.
for(int i = 0, j = values.length - 1; i <= values.length/2 && j >= values.length/2; i++, j--) {
    // i and j are at the same point - just print it and call it good.
    if(i == j) {
        System.out.print(values[i]);
        break;
    } else {
        System.out.print(values[i] + " ");
        System.out.print(values[j] + " ");
    }
}

关于java - 交替打印第一个和最后一个数组 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543313/

相关文章:

ios - 如何在 iOS swift 4 中获取具有范围的数组的一些值?

从 C 中的另一个数组创建数组

c - 无重复创建二维数组的最佳方法

java - 当您不知道实际权限时,如何解决关键资源的权限分配不正确的问题

c - 如何在C中动态初始化二维数组?

javascript - 迭代并计算数组内对象内的对象

java - Spring MVC 在 WEB-INF/views/package 中找不到合适的 jsp

java - 设备未收到 GCM 消息

python - PySpark 无法将 mariaDb 表中的值解码为整数

java - 如何测试一个ListActivity?