5

ファイルをオブジェクトの配列に読み込む際に問題が発生しています。データの行が 2 つの異なるサブグループに分けられるように if ステートメントを作成しました。1 つはプロデュース、もう 1 つはクリーニングです。しかし、プログラムを実行すると、作成されたオブジェクトは空です。ファイルをオブジェクトに接続するにはどうすればよいですか? 決定的な何かが欠けています。

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());
           }    
      }
  }
4

3 に答える 3

0

ここで while ループに Produce/Cleaning オブジェクトを追加する場合

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

新しい空の Produce/Cleaning オブジェクトを配列に追加しているだけです。

これを修正するには、設定しようとしている変数の値を設定できるように、Produce/Cleaning オブジェクト クラスに getter と setter をいくつか用意する必要があります (Produce/Cleaning アイテムの名前の文字列?価格? ints for # in-stock?)。

それができたら、Produce/Cleaning オブジェクトに値を与えることができます。これらの値は、それらを再度プルアップしようとしたときに何かを意味します。つまり、

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 の内容と、enter code hereyour array を使用して作成しようとしている内容について詳しく知る必要がありますが、これが出発点であることを願っています。

于 2013-07-16T18:22:44.083 に答える