Hallo zusammen
Beschreibung der Übung
In this scenario you have a list of calibrated masses. For every weight (of the Slow Loris) which is given to your function you should return a List with the masses you need for weighing the Slow Lori. Note that you can use every single mass only once!
Mein Code
Soweit funktioniert alles wie es sollte.
Code von Entwicklerheld
Mein Problem
Ich habe Probleme meinen Code so anzupassen das er mit der Ausgangslage von "Code von Entwicklerheld" funktioniert.
Wie kann ich mit:
Arbeiten?
Bei meinem Code habe ich die Variable weight und allMasses in der Funktion selber definiert. Jetzt müsste ich mit den Werten die eingegeben werden arbeiten.
Die Funktion bleibt die gleiche.
PS: Java ist meine erste Programmiersprache und ich stehe noch am Anfang. Ich gehe schwer davon aus dass ich es mir einfacher machen hätte können.
Beschreibung der Übung
In this scenario you have a list of calibrated masses. For every weight (of the Slow Loris) which is given to your function you should return a List with the masses you need for weighing the Slow Lori. Note that you can use every single mass only once!
Code:
1. Given is a List<Integer> which includes the calibrated masses of the balance.
2. Your Slow Loris weighs only 145 grams.
3. Your function should return an List<Integer> with all needed masses to weigh the slow loris: [1, 16, 128] . (1+16+128 = 145)
4. Your algorithm should work with lighter and heavier slow loris as well.
Mein Code
Soweit funktioniert alles wie es sollte.
Code:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ScaleChallenge {
public static void main(String[] args) {
int weight = 145;
int[] allMasses = {1, 2, 4, 8, 16, 32, 64, 128};
ArrayList<Integer> weightMasses = new ArrayList<Integer>();
for(int i = 1; i < allMasses.length + 1; i++) {
if(allMasses[allMasses.length - i] == weight) {
weightMasses.add(allMasses[allMasses.length - i]);
System.out.println(weightMasses);
break;
}else if(allMasses[allMasses.length - i]== 0) {
System.out.println(weightMasses);
}else if (allMasses[allMasses.length - i] > weight) {
continue;
}else {
weight = weight - allMasses[allMasses.length - i];
weightMasses.add(allMasses[allMasses.length - i]);
}
}
}
}
//Ausgabe [128, 16, 1]
Code von Entwicklerheld
Code:
package de.entwicklerheld.scalechallenge;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
class Scale {
static List<Integer> getMasses(Integer weight, List<Integer> allMasses) {
throw new NotImplementedException();
}
}
Mein Problem
Ich habe Probleme meinen Code so anzupassen das er mit der Ausgangslage von "Code von Entwicklerheld" funktioniert.
Wie kann ich mit:
Code:
static List<Integer> getMasses(Integer weight, List<Integer> allMasses)
Bei meinem Code habe ich die Variable weight und allMasses in der Funktion selber definiert. Jetzt müsste ich mit den Werten die eingegeben werden arbeiten.
Die Funktion bleibt die gleiche.
PS: Java ist meine erste Programmiersprache und ich stehe noch am Anfang. Ich gehe schwer davon aus dass ich es mir einfacher machen hätte können.