0

So I have the following read and write file program for an Array. How would the following look like for an ArrayList? I am having trouble with the syntax. I know an ArrayList would be like that: private ArrayList prod list = new ArrayList(); BUt how would the read/write IO syntax be? Thank you.

    static ActionProduct[] prodlist = new ActionProduct[50];
    static String filename = System.getProperty("user.dir") + "\\src\\product.txt";
    static int pIndex=0;


public static void readFile() throws IOException {
        // input file must be supplied in the first argument
        InputStream istream;
        if (filename.length() > 0) {
            File inputFile = new File(filename);
            istream = new FileInputStream(inputFile);
        } else {
            // if no filename, use standard input stream
            istream = System.in;
        }

        // use a buffered reader for line-at-a-time
        // reading
        BufferedReader lineReader;
        lineReader = new BufferedReader(new InputStreamReader(istream));

        // read one line at a time
        String line;
        while ((line = lineReader.readLine()) != null) {

            StringTokenizer tokens = new StringTokenizer(line, "\t");

            // String tmp = tokens.nextToken();
            // System.out.println("token " + tmp);
            prodlist[pIndex] = new ActionProduct();
            String category = prodlist[pIndex].getCategory();
            category = tokens.nextToken();
            System.out.println("got category " +category);

            int item = prodlist[pIndex].getItem();
            item = Integer.parseInt(tokens.nextToken());

            String name = prodlist[pIndex].getName();
            System.out.println("got name " +name);

            double price = prodlist[pIndex].getPrice();
            price = Double.parseDouble(tokens.nextToken());

            int units = prodlist[pIndex].getUnits();
            units = Integer.parseInt(tokens.nextToken());
            pIndex++;
        }
    }

1 Answer 1

2

Replace this:

static ActionProduct[] prodlist = new ActionProduct[50];

with

static List<ActionProduct> prodlist = new ArrayList<ActionProduct>();

then this:

        prodlist[pIndex] = new ActionProduct();

with

        ActionProduct p = new ActionProduct();
        prodlist.add(p);

Finally, replace all uses of prodlist[pIndex] with p, then get rid of pIndex everywhere else.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.