当我尝试用java运行这个程序时,即使没有错误,它也不会工作
当我尝试用java运行这个程序时,即使eclipse中没有错误,它也不会工作当我尝试用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
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都没有?