当我尝试在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]);
}
}
答案 0 :(得分:1)
这就是所谓的运行时错误。当然,它编译...但是对于这段代码,你需要小心处理数组。你的代码给了我一个ArrayOutOfBoundsException。
答案 1 :(得分:0)
请注意,您在代码的早期将x
设置为数组的长度,然后将orderednumbers[x]
设置为0.这将为您提供ArrayIndexOutOfBoundsException,因为Java数组索引为零 - 基于(即元素#1具有索引0,并且可以使用orderednumbers[0]
访问),数组的长度不是有效索引。
此外,您在排序中交换两个数字的代码不正确;你需要一个临时变量来存储结果。否则,您最终会使数组中的两个位置保持相同的值。
尝试这样做:
int temp = orderednumbers[x];
orderednumbers[x] = numbers[counter];
orderednumbers[x] = temp;
请注意if块结尾处的语句:
orderednumbers[x] = orderednumbers[x];
不会做任何事情。