Java 从数组列表计算平均值

Java 从数组列表计算平均值,java,arrays,average,Java,Arrays,Average,我得到一个错误 sum = sum + arr[i]; // "i cannot be resolved to a variable" 为什么会这样? 前面声明了“i”,我试图使用值arr[i]从名为numbers.txt的文本文件中查找并平均arraylist 公共类统计信息{ 公共静态void main(字符串[]args){ int[]number=readFiles(“./bin/q1/numbers.txt”); System.out.println(Arrays.toString(

我得到一个错误

sum = sum + arr[i]; // "i cannot be resolved to a variable"
为什么会这样?
前面声明了“i”,我试图使用值
arr[i]
从名为numbers.txt的文本文件中查找并平均arraylist

公共类统计信息{
公共静态void main(字符串[]args){
int[]number=readFiles(“./bin/q1/numbers.txt”);
System.out.println(Arrays.toString(numbers));
}
私有静态int[]读取文件(字符串文件){
试一试{
文件f=新文件(文件);
扫描器s=新扫描器(f);
int ctr=0;
//计算numbers.txt中的整数数
而(s.hasnetint()){
ctr++;
s、 nextInt();
}
int[]arr=新的int[ctr];
扫描仪s1=新扫描仪(f);
//从文件中读取整数并将其分配给数组
对于(int i=0;i
您遇到的问题是,您声明的
i
仅存在于前面的
for循环中

//从文件中读取整数并将其分配给数组
对于(int i=0;i
i
将在
for loop
之后销毁,这意味着您无法再访问
i
,您可以在中找到更多详细信息

要解决您的问题,您有许多选择,例如:

为循环创建了另一个

//从文件中读取整数并将其分配给数组
对于(int i=0;i
包括在前面的
for循环中

//从文件中读取整数并将其分配给数组
整数和=0;
对于(int i=0;i
请添加您正在编码的语言。此外,您还没有声明
i
,因为您提到的
i
只存在于
for循环中
,它将在for循环后被销毁。取决于您尝试执行的操作,您可以为循环声明另一个
,声明另一个
i
,或者将您的代码包含在前面的
for loop
中,并用花括号括起来。java编码以及将前面的代码包含在for loop中是什么意思?谢谢先生!我会搞砸的,但这样更有意义!为什么当我在try-catch中添加另一个if语句时,我在控制台中得到returnnull?
public class Statistics {

    public static void main(String[] args) {

        int [] numbers = readFiles("./bin/q1/numbers.txt");
        System.out.println(Arrays.toString(numbers));

    }

    private static int[] readFiles(String file) {

        try {
            File f = new File(file);
            Scanner s = new Scanner(f);
            int ctr = 0;

            //counting number of integers in numbers.txt
            while (s.hasNextInt()) {
                ctr++;  
                s.nextInt();
            }

            int [] arr = new int[ctr];
            Scanner s1 = new Scanner(f);

            //reads integers from file and assigns it to array
            for (int i = 0; i < arr.length; i ++)
                arr[i] = s1.nextInt();

            int sum = 0;
            sum = sum + arr[i];
            float average = sum / (float) arr.length;
            System.out.println("average of array is: " + average + "\n");
            System.out.println("length of array is: " + arr.length + " integers \n");
            return arr;

        }

        catch (Exception e) {
            return null;
        }
    }   
};