Bin Packing Using First Fit

1 minute read

The code has been modified slightly and now uploaded to the site.

Question

<— Return Home

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);
    }
}

<— Return Home

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;
    }

}

<— Return Home