Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

Code Block
languagejava
titleWeightProgram
linenumberstrue
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class WeightProgram {
	
	private Map<String,List<Double>> weightLogs = new HashMap<String,List<Double>>();
	
	public WeightProgram () {
		
		List<Double> log1 = new ArrayList<Double>();
		List<Double> log2 = new ArrayList<Double>();
		List<Double> log3 = new ArrayList<Double>();
		
		initializeLogs(log1, log2, log3);

		weightLogs.put("OlaNor", log1);
		weightLogs.put("PerSpe", log2);
		weightLogs.put("EspAsk", log3);
	}
	
	public String biggestLooser() {
		
		String looserName = "None";
		double highestLoss = Double.NEGATIVE_INFINITY;
		
		double initialWeight;
		double currentWeight;
		double prosentageWeightLoss;
		
		for (String userName : weightLogs.keySet()) {
			
			List<Double> log = weightLogs.get(userName);
			
			initialWeight = log.get(0);
			currentWeight = log.get(log.size()-1);
			
			prosentageWeightLoss = 100 - ((100/initialWeight)*currentWeight);
			
			if(prosentageWeightLoss > highestLoss) {
				looserName = userName;
				highestLoss = prosentageWeightLoss;
			}
		}
		return looserName;
	}
	
	private void initializeLogs(List<Double> log1, List<Double> log2, List<Double> log3) {
		log1.add(95.0);
		log1.add(93.1);
		log1.add(87.9);
		
		log2.add(123.0);
		log2.add(119.1);
		log2.add(115.9);
		
		log3.add(102.0);
		log3.add(100.1);
		log3.add(98.3);
	}
}

 

 

 

 

 

 

 









(8) Her brukes et HashMap til å organisere innveiingsloggene. HashMapet har

en String (deltakernavn) som nøkkel og en List som verdi. 
Deklarerer  Deklarerer HashMapet som et Map, siden det ikke skal brukes noen HashMap-
spesifikke metoder.
Merk at det egentlig ville vært mer naturlig med et personobjekt her som nøkkel .i Mapet

(12) Med en ArrayList til å holde på innveiingene vil man enkelt kunne
hente vekt etter uketall siden listen er 0-indeksert. Bruker double siden listen
skal støtte desimaltall. 
Deklarerer  ArrayListen  Deklarerer ArrayListen som en List, siden det ikke skal brukes noen ArrayList-
spesifikke metoder.

 

 

(28) Bruker metoden keySet() som returnerer alle nøklene HashMapet har,
og traverserer disse. 
(30) Henter deretter en og en log med get()-metoden.

(32) Henter element på plass 0 fra ArrayList.
(33) Henter siste element fra ArrayList, (størrelsen - 1) pga 0-indeksert.