错误是ArrayIndexOutOfBoundsException,我能理解,但我不知道错误在代码的什么位置.

public class Main {
    public static void main(String[] args) {
    double[] testArray = new double[]{3.5, 7.9, 0.0, -7.9, 10.99, 78.9, 66.8, 19.01, 18.9,99.7}; //declaring desired array

    double[] reversedTArray = new double[10]; // Using variable to reverse the first array

        for (double i = 1; i < testArray.length;i++ ){

            reversedTArray[1-(int)i] = testArray[10-(int)i];
        }

        for (double i : reversedTArray){
            System.out.println(reversedTArray[(int)i]);
        }
    }
}

我只是试图通过使用for循环将反转的数组赋给新的数组来反转array.我预计值会反转,但结果显示了一个错误.

我想要的结果是:

99.7
18.9
19.01
66.8
78.9
10.99
-7.9
1.0
7.9
3.5

推荐答案

好吧,你把索引和值搞混了.索引应为整数,值应为浮点数.

Note:索引始终从0开始,在length - 1结束.

public class Main {
    public static void main(String[] args) {
        double[] testArray = new double[] {
            3.5, 7.9, 0.0, -7.9, 10.99, 78.9, 66.8, 19.01, 18.9, 99.7
        };
        double[] reversedArray = new double[testArray.length]; // Use length of original

        // Loop through each index
        for (int i = 0; i < testArray.length; i++) {
            reversedArray[i] = testArray[testArray.length - i - 1];
        }

        // Iterate through the values
        for (double value : reversedArray) {
            System.out.println(value);
        }
    }
}

输出

99.7
18.9
19.01
66.8
78.9
10.99
-7.9
0.0
7.9
3.5

或者,您可以通过向后索引来指定反转值,如下所示:

for (int i = testArray.length - 1; i >= 0; i--) {
    reversedArray[testArray.length - i - 1] = testArray[i];
}

如果您想就地交换并且不关心改变原始数组,您可以try 交换.

它将在O(n/2)下运行:

public class Main {
    public static void main(String[] args) {
        double[] testArray = new double[] {
            3.5, 7.9, 0.0, -7.9, 10.99, 78.9, 66.8, 19.01, 18.9, 99.7
        };

        for (int i = 0; i < testArray.length / 2; i++) {
            // Perform a swap
            double tmp = testArray[testArray.length - i - 1];
            testArray[testArray.length - i - 1] = testArray[i];
            testArray[i] = tmp;
        }

        for (double value : testArray) {
            System.out.println(value);
        }
    }
}

Java相关问答推荐

无法从TemporalAccessor获取Instant:{},ISO解析为2024-04- 25 T14:32:42类型为java.time. form.Parsed

Java inline Double条件和值解装箱崩溃

SpringBootreact 式Web应用程序的Spring Cloud Configer服务器中的资源控制器损坏

如何让DTO接受空字符串字段,但如果它们不为空,则应用JPA验证?

为什么在maven中,getLast方法不适用于List?

Java流传输一个列表并创建单个对象

无法使用Java&;TestContainers获取AWS SQS队列的属性

如何解释Java中for-each循环中对Iterable的强制转换方法引用?

对字符串长度进行排序,但颠倒了顺序(最长字符串在前)

如何集成语义发布和BitBucket(Java项目)

try 在Android Studio中的infoWindow中使用EditText(Java)

如何在Java中为thunk创建映射器函数

如何在@CsvSource中传递空格作为值

如何从HttpResponse实例获取Entity对象的内容?

Spring Framework6.1中引入的新RestClient是否有适合于测试的变体,就像RestTemplate和TestRestTemplate一样?

从12小时开始的日期模式

如何通过Java java.lang.Foreign API访问本机字节数组

使用MediaPlayer类在一段时间后停止播放音乐

读取ConcurrentHashMap中的可变对象

这是JavaFX SceneBuilder的错误吗?