java反转一串数字

时间:2014-03-27 03:58:54

标签: java reverse

我需要能够输入一个数字列表,最后一个是-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);
}
}

1 个答案:

答案 0 :(得分:0)

您的问题是您将“局部变量”与“字段”混淆了。

局部变量是您在方法体内声明的变量。它们不能在声明之前使用,并且一旦方法停止运行就不能使用它们 - 它们的值已不复存在。

字段是您在类中声明的变量,但不在任何方法之外。它们存在于类的每个对象内(或者如果你将它们声明为静态,则在类本身内部),这意味着它们将值从一个方法调用保持到下一个。

您在不同方法中声明了int number;int[] value;,这意味着它们是局部变量,并且每次运行这些方法时都会重新创建它们。这不是你想要的。您要么将它们从一个方法传递给下一个方法,作为参数;或者将它们作为你班级的领域。