What am I missing out?
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main
{
public static void main (String[] args) throws Exception
{
Scanner consoleScanner = new Scanner(System.in);
String input;
String[] splitedInput;
int budget = -1;
int partiesAmount;
int counter = 0;
List<Integer[]> bestCases = new ArrayList<Integer[]>();
double[][] parties = new double[0][0];
double[] tempArray;
boolean reset = true;
do {
input = consoleScanner.nextLine();
if (!input.equals("0 0")) {
splitedInput = input.split(" ");
if (reset) {
budget = Integer.parseInt(splitedInput[0]);
partiesAmount = Integer.parseInt(splitedInput[1]);
parties = new double[partiesAmount][3];// entrencePrice, funRating, overallRating
reset = false;
input = consoleScanner.nextLine();
splitedInput = input.split(" ");
}
if (!input.equals("")) {
tempArray = new double[3];
tempArray[0] = Integer.parseInt(splitedInput[0]);// ticketPrice
tempArray[1] = Integer.parseInt(splitedInput[1]);// funAmount
if (tempArray[1] == 0)
tempArray[2] = tempArray[0]/0.01;
else
tempArray[2] = tempArray[0]/tempArray[1];// party rank
parties[counter++] = tempArray;
} else {
bestCases.add(totalSum(listBestPartiesBuget(bubbleSort(parties), budget)));
reset = true;
counter = 0;
}
}
} while (!input.equals("0 0"));
for (Integer[] bestCase : bestCases)
System.out.println(bestCase[0] + " " + bestCase[1]);
}
private static Integer[] totalSum(List<Integer[]> listBestPartiesBuget) {
Integer[] totalSum = new Integer[2];
totalSum[0] = 0;
totalSum[1] = 0;
for (Integer[] party : listBestPartiesBuget) {
totalSum[0] += party[0];
totalSum[1] += party[1];
}
return totalSum;
}
private static List<Integer[]> listBestPartiesBuget(double[][] parties, int budget) {
List<Integer[]> bestScenarios = new ArrayList<Integer[]>();
int expenses = 0;
for (int i = 0; i < parties.length; i++) {
if (expenses + parties[i][0] <= budget) {
bestScenarios.add(parseDoubleArray(parties[i]));
expenses += parties[i][0];
}
}
return bestScenarios;
}
private static Integer[] parseDoubleArray(double[] array) {
Integer[] newArray = new Integer[2];
newArray[0] = Integer.valueOf((int) array[0]);
newArray[1] = Integer.valueOf((int) array[1]);
return newArray;
}
private static double[][] bubbleSort(double[][] array) {
for (int c = 0; c < ( array.length - 1 ); c++) {
for (int d = 0; d < array.length - c - 1; d++) {
if (array[d][2] > array[d+1][2])
{
double[] swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
return array;
}
}