java - 错误: variable might not have been initialized - How to initialize ArrayList?

标签 java arraylist

我已经查看了之前所有与此标题类似的问题,但我找不到解决方案。所有错误都表明我没有初始化 ArrayList。我是否没有像 = new ArrayList<Double> 这样初始化 ArrayList? ?

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.PrintWriter;

public class main
{
    public static void main (String[] args) throws FileNotFoundException
    {
        ArrayList<Double> RPM, bCoeffs, filteredRPM = new ArrayList<Double>();
        Scanner RPMFile = new Scanner(new File("RotationSpeed.txt"));

        while(RPMFile.hasNextLine()){
            String line = RPMFile.nextLine();

            Scanner scanner = new Scanner(line);
            scanner.useDelimiter(",");
            while(scanner.hasNextDouble()){
                RPM.add(scanner.nextDouble());
            }
            scanner.close();
        }
        RPMFile.close();

        int windowSize = 10;
        int filterItterations = 1;

        for (int i = 0; i < windowSize; i++){
                double temp = 1/windowSize;
                bCoeffs.add(temp);
        }

        for (int k = 1; k <= filterItterations; k++){
            if (k == 1){
                for (int n = windowSize; n < RPM.size(); n++){
                    int m = 0;
                    double tempYSum = 0;
                    for (int j = 0; j < windowSize; j++){
                        double tempY = (bCoeffs.get(j))*(RPM.get(n-m));
                        tempYSum += tempY;
                        m++;
                    }
                    filteredRPM.add(tempYSum);
                }
            }else{
                int i = 1;
                for (int n = windowSize; n < filteredRPM.size(); n++){
                    int m = 0;
                    double tempYSum = 0;
                    for (int j = 0; j < windowSize; j++){
                        double tempY = (bCoeffs.get(j))*(filteredRPM.get(n-m));
                        tempYSum += tempY;
                        m++;
                    }
                    filteredRPM.set(i, tempYSum);
                    i++;
                }
            }
        }
    }
}

我收到的错误如下:

main.java:20: error: variable RPM might not have been initialized
                RPM.add(scanner.nextDouble());
                ^
main.java:31: error: variable bCoeffs might not have been initialized
                                bCoeffs.add(temp);
                                ^
main.java:36: error: variable RPM might not have been initialized
                                for (int n = windowSize; n < RPM.size(); n++){
                                                             ^
main.java:40: error: variable bCoeffs might not have been initialized
                                                double tempY = (bCoeffs.get(j))*(RPM.get(n-m));
                                                                ^
main.java:52: error: variable bCoeffs might not have been initialized
                                                double tempY = (bCoeffs.get(j))*(filteredRPM.get(n-m));
                                                                ^
5 errors

最佳答案

只需分配变量:您当前声明了 3 个变量,但只为最后一个变量分配了值。

ArrayList<Double> RPM = new ArrayList<>(), bCoeffs = new ArrayList<>(), filteredRPM = new ArrayList<>();

请注意,有些人不鼓励在同一行声明许多变量,例如it is forbidden by Google's style guide :如果每行写一个,会更容易阅读:

ArrayList<Double> RPM = new ArrayList<>();
ArrayList<Double> bCoeffs = new ArrayList<>();
ArrayList<Double> filteredRPM = new ArrayList<>();

关于java - 错误: variable might not have been initialized - How to initialize ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072803/

相关文章:

javascript - 如何获得数学函数的真实值

Java EE future 的空指针

java - 如何仅使用数组列表的一部分填充 ListView

java - 如何检索ArrayList(Java)的索引?

java - 获取数组列表的中位数长度

java - 无法将 JSONObjects 的 ArrayList 传递给新 Activity

java - Karate BDD 框架通过简单的配置抛出 NPE

java - 编码类型以阻止文件(文本)提示下载?

java - 在 org.elasticsearch.client.RestHighLevelClient 中获取没有 id 的结果

Java Arraylist 大小声明和性能