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.