当前位置: 首页 > 知识库问答 >
问题:

如何更正我尝试的反向数组的顺序?

寿伟
2023-03-14

我当时正在做一个项目,可以看到一系列的小数被反向和横向打印出来。我已经让java代码以横向格式打印,但是当涉及到数组变量的打印时,它不是以相反的顺序,而是以随机顺序。我不确定我哪里出了错,想再多看一眼,看看我哪里出了错,谢谢。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    DecimalFormat decimalFormat = new DecimalFormat("#.##");
    double [] dArray = {3.1415, 17.4567, 8.3132};
    int i = 0;
    for (double d : dArray) {
        dArray [i] = Double.valueOf(decimalFormat.format(d));
        i++;
    }
    for (double d = dArray.length-1;d>=1;d--)
        //System.out.println(dArray[i]);    
    Arrays.stream(dArray).forEach(System.out::println);
}



}

共有2个答案

濮阳原
2023-03-14
匿名用户

当您在foreach()中使用stream时,顺序不会得到严格维护。相反,应该使用forEachOrder()。就像,

Arrays.stream(dArray).forEachOrdered(System.out::println);

阎自怡
2023-03-14

您在代码中犯了一些错误:

for (double d = dArray.length-1;d>=1;d--)
    System.out.println(dArray[i]);

d应该是一个int,并且应该减少到零而不是一。此外,dArray[i]应该是dArray[d],因为这是您选择的计数器变量。最后,语句System.out.println(dArray[i]);不会打印出数组的内部值。它将打印出对象的hashcode(是的,数组是Java对象)。

for (double d = dArray.length-1;d>=1;d--)
    //System.out.println(dArray[i]);    
    Arrays.stream(dArray).forEach(System.out::println);

由于在循环中没有使用大括号,因此对之前打印数组的尝试进行注释会产生在循环中调用流操作的不良影响。所以基本上,你是在迭代的同时打印出整个数组。然后将数组的内容打印两次。你也应该注释掉for循环。

解决方案是:

public class ReverseArray {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        double[] dArray = {3.1415, 17.4567, 8.3132};
        double[] reversedArray = new double[dArray.length];
        System.out.print("[");
        for(int i = 0; i < dArray.length; i++) {
            double value = dArray[i];
            System.out.print(value);
            if (i < dArray.length - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("]");

        for (int i = dArray.length - 1, j = 0; i >= 0; i--, j++) {
            reversedArray[j] = dArray [i];
        }
        System.out.print("[");
        for(int i = 0; i < reversedArray.length; i++) {
            double value = reversedArray[i];
            System.out.print(value);
            if (i < reversedArray.length - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("]");
    }
}

上述代码输出:

[3.1415, 17.4567, 8.3132]
[8.3132, 17.4567, 3.1415]

您可以使用DecimalFormat来使用您的模式显示输出。您不应该使用它来格式化值,然后将它们保存到数组中。如果你在金融软件中这样做,你最终会进监狱。使用十进制格式模式,我可以修改两个系统。出来print()如下:系统。出来打印(十进制格式(值)) 。有了这一变化,程序现在输出:

[3.14, 17.46, 8.31]
[8.31, 17.46, 3.14]

无需修改数组的值。

 类似资料:
  • 问题内容: 我的作业问题就是这样 编写一个程序,使用以下命令以相反的顺序打印char数组中的字母 例如,如果数组包含{‘c’,’s’,’c’,‘2’,‘6’,‘1’},则输出应为“ 162csc”。 我尝试过,但是我不知道这意味着什么 我这样做了,但是在主方法中调用方法“ printReverse”存在问题 问题答案: 我相信您所写的是您必须创建的方法的签名。 您将必须迭代数组并向后打印其中包含的

  • 问题内容: 我需要能够增加和减少对象中数组元素的位置。 我在MongoDB API中 查看了该API,但找不到任何让我这样做的东西。 我正在尝试使用贯通,并且我知道要向上或向下移动的元素的索引。 编码图像数组项的示例: 我想向上或向下移动“ img2”(但由于无处可去,因此“图像”应该不能向上推)。 如果我想向上推“ img2”,那么结果将是: 通过更改索引,交换或上推/下推来实现此目标都没有关系

  • 问题内容: 这是我的数组代码,我需要反向打印。 问题答案: 只需反转for循环的方向即可。现在,它从0到长度开始计数,从长度到0开始计数

  • 我是android新手。只是尝试制作一个webview应用程序,而不是实际的移动应用程序,然后我会将我的flask应用程序用作移动应用程序。 该应用程序运行正常,没有任何问题,但startActivityForResult给了我一个警告。以下是代码:

  • 似乎Lodash的sortedIndex期望一个前向排序数组来进行二进制搜索。(例如)

  • 问题内容: 表LIMIT 8、3中的SELECT ID 结果为8,9,10 但我需要10,9,8 你该怎么做?如果您添加“ ORDER BY ID DESC”,则得到3,2,1 问题答案: 将查询放入子选择中,然后在外部选择中颠倒顺序: 测试数据: 结果: 请注意,子查询中的ORDER BY是必需的,否则顺序是不确定的。感谢Lasse指出这一点!