java.util.ArrayList

Diskutiere java.util.ArrayList im Java Basics - Anfänger-Themen Bereich.
F

ftiago

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!


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)
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.
 
mihe7

mihe7

Die Funktion bleibt die gleiche.
Der Inhalt auch fast. Du musst lediglich auf Deine Definitionen verzichten. Statt eines Arrays hast Du für allMasses dann eine ArrayList, so dass Du im Code lediglich den Zugriff darauf anpassen musst: statt allMasses[x] schreibst Du allMasses.get(x) und statt allMasses.length hast Du allMasses.size()
 
T

tobi.97

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!


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)
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.
Hallo, nach knapp 3 Monaten möchte ich kurz erfragen, ob du deinen Code für diese Challenge zum Laufen gebracht hast?
Ich sitze nämlich aktuell auch daran, leider ohne wirklichen Erfolg.
 
T

temi

Steht doch alles mehr oder weniger in der Antwort von @mihe7 : Du musst anstatt der beiden lokalen Variablen "weight" und "allMasses" die beiden Parameter verwenden.
 
Thema: 

java.util.ArrayList

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben