简体   繁体   中英

How to store data in an index in an ArrayList into Arrays in Java

I am new to Java and I am trying to do a calculation using values within a txt file. I have read the txt file, which has 3 tabs, each with three values

I have been able to read the file and get the columns as indices but cannot add the separate values into array. So I want three separate arrays

Read file method

public void read()
{
    try
    {
        FileReader read = new FileReader(file);

        String line = null;
        while((line = FileReader.readLine()) != null)
        {
            a.add(line);
        }

    }
    catch (FileNotFoundException e) {}
    catch(IOException e) {}
}

Processing method

private void processor () {
    for (String li : a)
    {
        String[] data = li.split("\\s");

        Index = Double.parseDouble(data[0]);
        Customers = Double.parseDouble(data[1]); 
        rateOfBuy = Double.parseDouble(data[2]); 

    }
}

I dont think you are thinking about your data structures correctly. If I were you I would think about this a little differently. To me it makes the most sense just to use a simple array. To handle the complexity of the three columns, I would create a new class called CustomerRate or something to that effect. I would then make the data into instance variables belonging to instances of that class. That way you could just have a simple array of CustomerRate objects and then access the data stored by each of those objects. This will probably be a lot simpler to deal with overall too.

I am not sure exactly what you are trying to accomplish but I'll do my best to help You would create your new class to be something like this: your new class:

   //This is your new class
   public class CustomerRate {
        private int person;
        private double rate;

        //constructor
        public CustomerRate(int person, double rate) {
            this.person = person;
            this.rate = rate;
        }

        //add appropriate getters and setters and whatever else you need
        public double getRate() {
           return rate;
        }
    }

Use the data your parse from your file to create new CustomerRate Objects. Create an array of your objects. Note that this is just an example with one entry with random numbers I'm going to use so you will have to get the loop and parse working:

//creating an example customer
CustomerRate customer1 = new CustomerRate(100, 0.5);

//create your collection to store your customer data that you will add/parse
List<CustomerRate> myList = new ArrayList<CustomerRate>();

//adds to list
myList.add(customer1);

//gets element at index and then grabs the rate
double exampleCustomerRate;
exampleCustomerRate = myList.get(0).getRate();

I coded this quickly so I may have made some mistake but I hope that gives you the general idea of what you should do.

You just need another ArrayList to store your rateOfBusiness . Something like this:

String file = "test.txt";
ArrayList<String> a = new ArrayList<String>();
ArrayList<Double> rateOfBusiness = new ArrayList<>();  //Define with your other fields

Then loop through your data and do the math while adding to the array

private void process () {

    for (String li : a)
    {
        String[] data = li.split("\\t");

        Index = Double.parseDouble(data[0]);
        Customers = Double.parseDouble(data[1]);; //per year
        rateOfBuy = Double.parseDouble(data[2]); //per year
        rateOfBusiness.add(Customers*rateOfBuy);  //Do math and store for that customer
    }
}

Edit: Even though this solves your problem, I would look into learning some Object Oriented principles. IsaacShiffman (or Lvl 9 Oddish, or whatever his name is) has a start on how you would solve this going that direction. Makes your code a lot easier to follow and debug.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM