将数据文件读入对象数组?

时间:2013-07-16 17:07:23

标签: java object

我在将文件读入对象数组时遇到问题。我创建了一个if语句,以便将数据行分成两个不同的子组,一个是生成的,另一个是清理的。但是当我运行程序时,创建的对象是空的。如何将文件连接到对象?我错过了一些至关重要的东西。

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

public class Inventory{

    public static void main(String[] args){
         int i=0;
         Product[] pr=new Product[16];
         File InventoryFile=new File("inventory.csv");
         Scanner in=null;
         try{
            in=new Scanner(InventoryFile);
            while(in.hasNext()){
               String line=in.nextLine();
               String[]fields=line.split(",");
               if(fields[0].equals("produce"))
                    pr[i]= new Produce();
               else 
                    pr[i]=new Cleaning();
               i++;
            }
            System.out.println(pr[6]);  
           }catch(FileNotFoundException e){
             System.out.println("Arrgggg"+e.getMessage());
           }    
      }
  }

3 个答案:

答案 0 :(得分:3)

你的问题源于甚至没有在你的对象中设置varibles,你所做的就是让它们生产和清洁但不填充它们的领域。

如果不知道如何设置您的产品,产品和清洁类以及如何填充变量,我无法进一步回答。

答案 1 :(得分:0)

你没有填充你的对象,你正在创建,但没有填充它们。你可以像这样创建一个构造函数:

public Product(String a, int b, int c, String, d, int e)
{
     this.a = a;
     this.b = b;
     this.c = c;
     this.d = d;
     this.e = e;
}

在扩展类中,您只需调用超级构造函数。

public Produce(String a, int b, int c, String, d, int e)
{
    super(a,b,c,d,e);
}

当你创建它们时,请致电:

new Produce(fields[0],Integer.parseInt(fields[1]),Integer.parseInt(fields[2]),fields[3],Integer.parseInt(fields[4]));

答案 2 :(得分:0)

当您在while循环中添加Produce / Cleaning对象时

if(fields[0].equals("produce"))
                pr[i]= new Produce();
           else 
                pr[i]=new Cleaning();

您只需在阵列中添加新的空白Produce / Cleaning对象。

要解决此问题,您需要在Produce / Cleaning对象类中包含一些getter和setter,以便您可以设置您要设置的任何变量的值(产品名称/清洁项目的字符串) ?价格翻倍?#in-stock?)。

一旦你有了这个,你可以给你的产品/清洁对象值,当你试图再次提起它们时,这意味着什么,即

if(fields[0].equals("produce"))
                pr[i]= new Produce(fields[1], fields[2], fields[3]); //assuming you make a constructor that takes these values
           else 
                pr[i]=new Cleaning(fields[1], fields[2], fields[3]);
.
.
.
if(pr[i] instanceOf Produce)
                String vegName = pr[i].getName();
                int stock = pr[i].getStock();
                double price = pr[i].getPrice();

我需要更多地了解csv中的内容以及您尝试使用输入代码创建的内容,以便为您提供更多帮助,但希望这是一个开始。