Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 在ArrayList中存储对象时,只能使用最后一个存储的对象_Java_Arrays_List_Arraylist_File Io - Fatal编程技术网

Java 在ArrayList中存储对象时,只能使用最后一个存储的对象

Java 在ArrayList中存储对象时,只能使用最后一个存储的对象,java,arrays,list,arraylist,file-io,Java,Arrays,List,Arraylist,File Io,我有一个文件,上面有这样的输入:零食名称价格,用一个标签隔开。 使用我编写的代码,我将所有内容存储在Obj产品的ArrayList中: public ArrayList<Product> listsnack = new ArrayList<>(); public Product readSnack() throws FileNotFoundException, IOException { BufferedReader in = new

我有一个文件,上面有这样的输入:
零食名称价格
,用一个标签隔开。 使用我编写的代码,我将所有内容存储在Obj产品的ArrayList中:

public ArrayList<Product> listsnack = new ArrayList<>();
       public Product readSnack() throws FileNotFoundException, IOException {
            BufferedReader in = new BufferedReader(new FileReader("input.txt"));
            String line;
            while ((line = in.readLine()) != null) {
                snackline = linea.split("\t");
                String code =snackline[0];
                String name = snackline[1];
                String price = snackline[2];
                Product p1 = new Product(snackline[0], snackline[1], snackline[2]);
                listsnack.add(p1);

            }
 Product p1 = new Product(snackline[0], snackline[1], snackline[2]);
            return p1;
        }
现在,我想写一个方法,通过使用与产品代码和正确价格匹配的键盘输入,它显示“供货已正确完成”

我想打电话给一个新的:

Readfile f= new Readfile();
f.readSnack().code \\ Comparing this to System.in input
但是,当我在方法中使用它时,它只适用于ArrayList中的最后一个元素。 我做错了什么?
致以最诚挚的问候

试着像这样构建您的功能。调用它后,您可以循环浏览产品并将其全部打印出来

public List<Product> readSnacks() throws FileNotFoundException, IOException {
    List<Product> listsnack = new ArrayList<>();
    BufferedReader in = new BufferedReader(new FileReader("input.txt"));
    String line;
    while ((line = in.readLine()) != null) {
        snackline = linea.split("\t");
        String code =snackline[0];
        String name = snackline[1];
        String price = snackline[2];
        Product p1 = new Product(snackline[0], snackline[1], snackline[2]);
        listsnack.add(p1);
    }
    return listsnack;
}
public List readsnakts()抛出FileNotFoundException,IOException{
List listnakp=new ArrayList();
BufferedReader in=新的BufferedReader(新文件读取器(“input.txt”);
弦线;
而((line=in.readLine())!=null){
snackline=linea.split(“\t”);
字符串代码=snackline[0];
字符串名称=snackline[1];
字符串价格=小吃线[2];
产品p1=新产品(snackline[0]、snackline[1]、snackline[2]);
添加(p1);
}
返回列表;
}
你可以这样称呼它:

List<Product> snacks = readSnacks();
List snakts=readsnakts();

从外观上看,您的
readSnack
方法只返回最后一个snack(
p1
)。也许你想返回
列表
?@zron甚至不是这样,它创建了另一个新的
产品
,与上一个
产品
具有相同的信息,但是这个
产品
实际上与
列表中的最后一个
产品
完全不同,KevinEsche得到了它,那么,我如何才能返回整个列表,而不仅仅是最后一个元素呢?非常感谢!现在我正在编写提供零食的方法,但是当我遇到一个新对象时,我只能写“readfile.listnakp.get(i)。*whatineed*”,但我需要所有的物品,而不仅仅是一个。例如,对于我需要的每一项价格部分。。。我应该为每个循环做一个测试吗?是的,每个循环
List<Product> snacks = readSnacks();