1

Okay so i have to read data from an CSV file and add methods that calculate which is seen in my code below, so my question is how can i put in output the header of a row (example first,second or third) from which the value has been taken from?

Possibilites | first | second | third| fourth
Decrease     |  28   | 24     | 16   |  25
Increase     |  30   | 42     | 44   |  45

this is a CSV file im using

My output is like this:

Optimist: first  (45)
Pessimist: second  (30)
Laplace:  third(33)
Least regret:  fourth(5)

But i want it to be like this:

Optimist: fourth (45)
Pessimist: first(30)
Laplace:  second (33)
Least regret:  fourth(5)
package CSVReader;
import java.io.*;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import javax.swing.plaf.FileChooserUI;

import com.opencsv.CSVReader;

public class OpenCSV {
    public static void main(String[] args) {
        CSVReader reader;
        String file = "C:\\Users\\pajov\\Desktop\\osnovne_metode1.csv";
        String[] decreaseEconomyAlternatives = null;
        String[] increaseEconomyAlternatives = null;
        String[] headers = null;
        int sizeOfDecisionAlternatives = 0;
        try {
            reader = new CSVReader(new FileReader(file));
            List<String[]> allResults = reader.readAll();
            sizeOfDecisionAlternatives = allResults.get(0).length - 1;
            headers = allResults.get(0);
            decreaseEconomyAlternatives = allResults.get(1);
            increaseEconomyAlternatives = allResults.get(2);
            System.out.println("Prebrana je bila datoteka: " + file);
            for (int i = 1; i <= sizeOfDecisionAlternatives; i++) {
                int iterator = i;
            System.out.println("Optimist:"+headers[iterator] +"  (" + calculationOptist(decreaseEconomyAlternatives, increaseEconomyAlternatives, sizeOfDecisionAlternatives) + ")");
            iterator++;
            System.out.println("Pessimist:"+headers[iterator] + "  (" + calculationPessimist(decreaseEconomyAlternatives, increaseEconomyAlternatives, sizeOfDecisionAlternatives) + ")");
            iterator++;
            System.out.println("Laplace: "+headers[iterator] + "  (" + calculationLaplace(decreaseEconomyAlternatives, increaseEconomyAlternatives, sizeOfDecisionAlternatives) + ")");
            iterator++;
            System.out.println("Least regret: "+headers[iterator] + "  (" + calculationLeastRegret(decreaseEconomyAlternatives, increaseEconomyAlternatives, sizeOfDecisionAlternatives) + ")");
            break;
      }
     
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        

        
        
        
        
        
        
        

    }
    private static Integer calculationLeastRegret(String[] decreaseEconomyAlternatives, String[] increaseEconomyAlternatives, int sizeOfDecisionAlternatives) {
        List<Integer> arrayOfDecreasedValues = new ArrayList<>();
        List<Integer> arrayOfIncreasedValues = new ArrayList<>();
        List<Integer> maxNumbersOfNewArray = new ArrayList<>();

        for (int i = 1; i < sizeOfDecisionAlternatives + 1; i++) {
            arrayOfDecreasedValues.add(Integer.valueOf(decreaseEconomyAlternatives[i].replace(" ", "")));
            arrayOfIncreasedValues.add(Integer.valueOf(increaseEconomyAlternatives[i].replace(" ", "")));
        }

        Integer maxOfDereased = Collections.max(arrayOfDecreasedValues);
        Integer maxOfIncreased = Collections.max(arrayOfIncreasedValues);

        for (int i = 0; i < sizeOfDecisionAlternatives; i++) {
            maxNumbersOfNewArray.add(Math.max((maxOfDereased - arrayOfDecreasedValues.get(i)), (maxOfIncreased - arrayOfIncreasedValues.get(i))));
        }
        return Collections.min(maxNumbersOfNewArray);
    }

    private static Integer calculationLaplace(String[] decreaseEconomyAlternatives, String[] increaseEconomyAlternatives, int sizeOfDecisionAlternatives) {
        List<Integer> arrayOfNumbers = new ArrayList<>();
        for (int i = 1; i < sizeOfDecisionAlternatives; i++) {
            arrayOfNumbers.add((Integer.valueOf(decreaseEconomyAlternatives[i].replace(" ", "")) + Integer.valueOf(increaseEconomyAlternatives[i].replace(" ", ""))) / 2);
        }
        return Collections.max(arrayOfNumbers);
    }

    private static Integer calculationPessimist(String[] decreaseEconomyAlternatives, String[] increaseEconomyAlternatives, int sizeOfDecisionAlternatives) {
        List<Integer> arrayOfNumbers = new ArrayList<>();
        for (int i = 1; i < sizeOfDecisionAlternatives + 1; i++) {
            arrayOfNumbers.add(Math.min(Integer.valueOf(decreaseEconomyAlternatives[i].replace(" ", "")), Integer.valueOf(increaseEconomyAlternatives[i].replace(" ", ""))));
        }
        return Collections.max(arrayOfNumbers);
    }

    private static Integer calculationOptist(String[] decreaseEconomyAlternatives, String[] increaseEconomyAlternatives, int sizeOfDecisionAlternatives) {
        List<Integer> arrayOfNumbers = new ArrayList<>();
        for (int i = 1; i < sizeOfDecisionAlternatives + 1; i++) {
            arrayOfNumbers.add(Math.max(Integer.valueOf(decreaseEconomyAlternatives[i].replace(" ", "")), Integer.valueOf(increaseEconomyAlternatives[i].replace(" ", ""))));
        }
        return Collections.max(arrayOfNumbers);
    }
}

Thanks in advance.

DJezda
  • 11
  • 1

0 Answers0