我需要能够输入一个数字列表,最后一个是-1,然后打印反向(不包括-1),然后找到平均值。我必须使用一个函数来找到反向。我卡住了,因为它无法解决我的平均值,这意味着我无法运行该程序,看看是否还有其他问题。
import java.util.Scanner;
public class Reverse {
public static void inReverse (int a) {
int number;
int[] value;
for (a = number - 2; a >= 0; a--) {
System.out.print(value[a] + " ");
}
}
public static double findAverage (int p, double average) {
int number;
for (p = number - 2; p >= 0; p--) {
average += value[p];
}
average = average / (number - 1);
return average;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] value;
int i, number, size;
size = 20;
System.out.println("Please enter the integers: ");
while (value[i - 1] != -1 && number < size) {
value[i] = input.nextInt();
i += 1;
number = i;
}
System.out.println("The values in reverse order are: ");
inReverse(i);
System.out.println(" ");
System.out.println("The average is " + average);
}
}
答案 0 :(得分:0)
您的问题是您将“局部变量”与“字段”混淆了。
局部变量是您在方法体内声明的变量。它们不能在声明之前使用,并且一旦方法停止运行就不能使用它们 - 它们的值已不复存在。
字段是您在类中声明的变量,但不在任何方法之外。它们存在于类的每个对象内(或者如果你将它们声明为静态,则在类本身内部),这意味着它们将值从一个方法调用保持到下一个。
您在不同方法中声明了int number;
和int[] value;
,这意味着它们是局部变量,并且每次运行这些方法时都会重新创建它们。这不是你想要的。您要么将它们从一个方法传递给下一个方法,作为参数;或者将它们作为你班级的领域。