Bin Packing Using First Fit
The code has been modified slightly and now uploaded to the site.

Main.java
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
ArrayList<Integer> arrList = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of objects: ");
int numOfObjects = input.nextInt();
System.out.print("Enter the weights of the objects: ");
for (int i = 0; i < numOfObjects; i++){
arrList.add(input.nextInt());
}
BinPack packBin = new BinPack(arrList);
packBin.sort();
System.out.println(packBin);
}
}
BinPack.java
import java.util.ArrayList;
public class BinPack{
private ArrayList<Integer> list;
private String append = "";
private ArrayList<Integer> add;
private ArrayList<Integer> addCopy;
public BinPack(){
}
public BinPack(ArrayList<Integer> list){
this.list = list;
}
public void sort(){
int append = 0;
// int counter = 0;
// int[] arr = new int[list.size()];
add = new ArrayList<Integer>();
addCopy = new ArrayList<Integer>();
for (int i = 0; i < add.size(); i++){
addCopy.set(i, add.get(i));
}
for (int i = 0; i < list.size(); i++){
if (list.get(i) == null){
continue;
}
else {
add.add(list.get(i));
addCopy.add(list.get(i));
append = list.get(i);
}
for (int j = i + 1; j < list.size(); j++){
if (list.get(j) == null){
continue;
}
if (list.get(j) + append <= 10){
// list.set(i + 1, list.get(j));
// arr[1] = arr[j];
// add += list.get(j);
append += list.get(j);
add.add(list.get(j));
addCopy.add(list.get(j));
list.set(j, null);
// counter++;
}
if (j == list.size() - 1){
addCopy.add(-1);
}
}
}
System.out.println("Add arraylist: " + add);
System.out.println("AddCopy arraylist: " + addCopy);
}
@Override
public String toString(){
int lastIndex = 0;
int fullSize = addCopy.size() + 1;
for (int i = 1; i <= fullSize; i++){
append += "Container" + i + " contains objects with weight ";
for (int j = lastIndex; j < addCopy.size(); j++){
if (addCopy.get(j) == -1){
lastIndex = j + 1;
// fullSize--;
break;
}
else {
fullSize--;
append += addCopy.get(j) + " ";
}
}
append += "\n";
}
return append;
}
}