当我尝试用java运行这个程序时,即使没有错误,它也不会工作

当我尝试用java运行这个程序时,即使没有错误,它也不会工作,java,Java,当我尝试用java运行这个程序时,即使eclipse中没有错误,它也不会工作 import java.util.Scanner; public class Project1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter how many numbers: "); int

当我尝试用java运行这个程序时,即使eclipse中没有错误,它也不会工作

import java.util.Scanner;

public class Project1 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter how many numbers: ");
        int x = input.nextInt();

        double[] numbers = new double[x];
        double[] orderednumbers = new double[x];

        double total = 0;

        for (int i = 0; i < numbers.length; i++) {
            System.out.print("Please enter number " + (i + 1) + ": ");
            numbers[i] = input.nextDouble();
            total += numbers[i];
        }
        double mean = (total / x);
        System.out.println("Mean: " + mean);
        orderednumbers[x] = 0;
        for (int counter = 0; counter < numbers.length; counter++) {

            if (numbers[counter] > orderednumbers[x]) {
                orderednumbers[x] = numbers[counter];
                orderednumbers[x] = orderednumbers[x];
            }

        }
        System.out.println("Maximum: " + orderednumbers[x]);
    }

}
import java.util.Scanner;
公共类项目1{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入数字:”);
int x=input.nextInt();
双精度[]数字=新的双精度[x];
double[]OrderedNumber=新的双精度[x];
双倍合计=0;
for(int i=0;i订购编号[x]){
OrderedNumber[x]=数字[计数器];
OrderedNumber[x]=OrderedNumber[x];
}
}
System.out.println(“最大值:“+orderedNumber[x]);
}
}

请注意,您在代码的早期将
x
设置为数组的长度,然后转到并将
orderedNumber[x]
设置为0。这将给您一个ArrayIndexOutOfBoundsException,因为Java数组索引是基于零的(即元素#1的索引为0,可以使用
OrderedNumber[0]
访问),数组的长度不是有效的索引

此外,用于交换排序中的两个数字的代码不正确;您需要一个临时变量来存储结果。否则,将使数组中的两个位置具有相同的值

试着这样做:

int temp = orderednumbers[x];
orderednumbers[x] = numbers[counter];
orderednumbers[x] = temp;
请注意,if块末尾的语句:

orderednumbers[x] = orderednumbers[x];

不会完成任何事情。

这就是所谓的运行时错误。当然,它编译。。。但是对于这段代码,您需要小心处理数组的方式。你的代码给了我一个BoundsException数组。

你怎么知道它不起作用?甚至连stacktrace都没有?