Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取带有列表的文件时获取所有空值_Java_File_Arraylist_Null - Fatal编程技术网

Java 读取带有列表的文件时获取所有空值

Java 读取带有列表的文件时获取所有空值,java,file,arraylist,null,Java,File,Arraylist,Null,您好,读取文件时出现问题。我的文件内容是: Alcohol 0,000425 0,000385 0,00003 0,89. 它表明所有变量都等于null。 我在这段代码中找不到错误。也许过滤器或foreach循环有问题 public class FileReading { List<Double> Mass1 = new ArrayList<>(); List<Double> Mass2 = new ArrayList<>();

您好,读取文件时出现问题。我的文件内容是:

Alcohol 0,000425 0,000385 0,00003 0,89.
它表明所有变量都等于null。 我在这段代码中找不到错误。也许过滤器或foreach循环有问题

public class FileReading  {
    List<Double> Mass1 = new ArrayList<>();
    List<Double> Mass2 = new ArrayList<>();
    List <Double> Voulume = new ArrayList<>();
    List<Double> Height = new ArrayList<>(); 

    void Reading(String name,int sk) throws IOException{ 
        List<String> Material= new ArrayList<>();
        Material = Files.lines(Paths.get("D:/Desktop/NewFolder/26laboratorinis.txt")).
                filter(s->s.contains(name))
                .map(s ->s.substring(sk)).collect(Collectors.toList());

        for(String number : Material){

            String[] l = number.split(" ");
            Mass1.add(Double.parseDouble(l[0]));
            Mass2.add(Double.parseDouble(l[1]));
            Volume.add(Double.parseDouble(l[2]));
            Height.add(Double.parseDouble(l[3]));
        }   

    }
    public void setMass1(List<Double> PAM) {
        this.Mass1 = PAM;
    }

    public void setMass2(List<Double> TAM) {
        this.Mass2 = TAM;
    }
    public void setVolume(List<Double> T) {
        this.Volume =T;
    }

    public void setHeight(List<Double> VSA) {
        this.Height = VSA;
    }
    public List<Double> getMass1() {
        return Mass1;
    }
    public List<Double> getMass2() {
        return Mass2;
    }
    public List<Double> getVolume() {
        return Volume;
    }
    public List<Double> getHeight() {
        return Height;
    }

}
公共类文件读取{
List Mass1=新的ArrayList();
List Mass2=新的ArrayList();
List Voulume=new ArrayList();
列表高度=新的ArrayList();
无效读取(字符串名,int-sk)引发IOException{
列表材质=新的ArrayList();
Material=Files.lines(path.get(“D:/Desktop/NewFolder/26laboratorinis.txt”))。
过滤器->包含(名称))
.map(s->s.substring(sk)).collect(collector.toList());
用于(字符串编号:物料){
字符串[]l=number.split(“”);
Mass1.add(Double.parseDouble(l[0]);
Mass2.add(Double.parseDouble(l[1]);
Volume.add(Double.parseDouble(l[2]);
高度.add(Double.parseDouble(l[3]);
}   
}
公共void setMass1(列表PAM){
这1.Mass1=PAM;
}
公共空间集合2(列表TAM){
此.Mass2=TAM;
}
公共卷(列表T){
这个体积=T;
}
公共空间设置高度(列表VSA){
该高度=VSA;
}
公共列表getMass1(){
返回质量1;
}
公共列表getMass2(){
返回质量2;
}
公共列表getVolume(){
返回量;
}
公共列表getHeight(){
返回高度;
}
}

调用Reading方法时,您会将哪些值传递给它

无论如何:

文件.行
-将文件中的所有行作为流读取。 然后,将每一行放入
filter
方法中。所以,若这行并没有包含你们的参数名,它只会“扔掉”这行。
在该方法之后,
map
将所有过滤的行转换为
s.substring(sk)

最后,
collect
方法将流转换为列表


所以,可能您传递的名称在文档的任何一行中都不包含内容,这就是为什么您得到null。

了解Java命名约定。属性/变量名称应以小写字符开头使用调试器找出发生了什么情况您拼写错误了变量declariation:voulume除了变量名称约定和键入错误之外,其他一切看起来都很好,您还可以给我们这些参数“name”和“sk”的值如果你需要进一步的帮助,我无法复制。在我的计算机上,当更正
Voulume
中的键入错误并删除0,89之后的句点时,您的程序运行良好,并将数字填充到四个
ArrayList
s中。它们将得到一个空列表,而不是空列表。可能还有其他问题。我应该如何在其他类中使用这些变量?读取文件;file.getMass1().get(0)?是的,@LOGO,看起来不错,除了你应该在调用任何getter之前调用
Reading()
,让对象有机会从文件中读取任何内容。@KlitosKyriacou,是的,你是对的,它应该是空列表,而不是null。@LOGO,你能提供调用
Reading
方法并得到null的方法吗?我想解决你的问题会更容易!