{Kurung Kurawal}

Java, menghitung jumlah dengan batasan dari deretan angka

Ada pertanyaan di forum, sang penanya mungkin membuat aplikasi untuk menghitung total barang yang dapat diangkut (mungkin lagi) kapal, dengan kapasitas tertentu. Jadi si kapal ini memiliki kapasitas X ton, dan terdapat barang barang yang ingin diangkut, dengan berbagai variasi berat. Pertanyaannya, bagaimana memilih barang yang akan diangkut, dengan tidak melebihi total kapasitas, dan dimulai dari barang dengan berat paling ringan? Paling tidak itulah yang saya tangkap.

So, karena sedang pengen ngetik, saya buatkan algoritma sederhana untuk filter data tersebut, namun perlu diingat, ini mungkin tidak serta merta dengan tongkat ajaib langsung menjawab pertanyaan di forum itu, karena saya rasa, bagian yang saya tulis ini adalah kunci dari pemrosesan data-nya, mengenai tampilan, saya rasa seharusnya bukan menjadi masalah, Model dapet, View tentu saja sudah mudah. Control, silakan diatur sendiri.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
 * Author: Lee
 * Date: 6/20/2014
 * Time: 2:22 PM
 * To change this template use File | Settings | File Templates.
 */
public class Test {
    public static void main(String[] args){
        double[] weight = { 20d, 19, 15d, 18, 16.9d, 20.1d };
 
        System.out.print("Sebelum diurutkan: ");
        printDouble(weight);
 
        System.out.print("Setelah diurutkan: " );
        java.util.Arrays.sort(weight);
        printDouble(weight);
 
        double kapasitas = 60d;
        double terangkut = 0d;
 
        for(double i : weight){
            // jika sudah penuh, maka tidak perlu dilanjutkan perhitungan lagi
            if(terangkut >= kapasitas){
                break;
            }
 
            if(terangkut + i <= kapasitas){
                System.out.println(String.format("yang berat %s DIANGKUT", i));
                terangkut += i;
            } else {
                System.out.println(String.format("yang berat %s TIDAK DIANGKUT", i));
            }
        }
        System.out.println("Total berat angkut: " + terangkut);
    }
 
    public static void printDouble(double[] w){
        String a = null;
        for(double i : w){
            if(a == null){
                a = i + "";
            } else {
                a += ", " + i;
            }
        }
 
        System.out.println(a);
    }
}

Contoh hasil program bisa dilihat di http://goo.gl/WJxkZu atau pada gambar yang ada. Dan link forum tersebut bisa dilihat di facebook.

Semoga ini bisa membantu.