Vinnaren i pepparkakshustävlingen!
2015-12-15, 21:40
  #1
Medlem
Har följande uppgift att lämna in: http://i.imgur.com/QFDK5Fh.png

Och min lösning är:

Kod:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class uppgift {

	String[][] julklappsbarn, koordinater;

	public static void main(String[] args) {
		new uppgift();
		System.exit(0);
	}

	public uppgift() {
		initArrays();

		int DHL = 0;
		double tomten = 58;
		try {
			tomten = Double.parseDouble(JOptionPane.showInputDialog("breddgrad?"));
		} catch (Exception e) {
		}
		String stad;
		String stad1;
		for (int i = 0; i < julklappsbarn.length; i++) {
			stad = julklappsbarn[i][1];
			for (int j = 1; j < koordinater.length; j++) {
				stad1 = koordinater[j][0];
				if (stad.equals(stad1)) {
					String[] splits = koordinater[j][1].split(" ");
					double newbg = Double.parseDouble(splits[0]) + (Double.parseDouble(splits[1]) / 60);
					if (newbg < tomten)
						DHL++;
					break;
				}
			}
		}
		System.out.println(DHL);
	}

	public void initArrays() {
		try {
			koordinater = parseTextToArray("Koordinater.txt");
			julklappsbarn = parseTextToArray("Julklappslista.txt");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String[][] parseTextToArray(String filePath) throws Exception {
		String[][] res = new String[0][0];

		File file = new File(filePath);

		if (!file.exists()) {
			return res;
		}

		FileInputStream fr = new FileInputStream(file);
		BufferedReader br = new BufferedReader(new InputStreamReader(fr));
		
		ArrayList<String> ppl = new ArrayList<String>();

		try {
			String cur = "";
			while ((cur = br.readLine()) != null) {
				ppl.add(cur);
			}
		} catch (Exception e) {
		}

		res = new String[ppl.size()][2];

		for (int i = 0; i < ppl.size(); i++) {
			String info = ppl.get(i);
			String[] splits = info.split("\t");
			res[i][0] = splits[0].trim();
			res[i][1] = splits[splits.length - 1].trim();
		}

		br.close();
		fr.close();

		return res;
	}
}

Jag vill få den att se så simpel och lättförståelig ut som möjligt. Den känns aningen slarvig. Någon som kan hjälpa mig göra det så optimalt som möjligt? Skulle verkligen uppskattas.
Citera
2015-12-15, 21:46
  #2
Medlem
Koordinater.txt
http://textuploader.com/5u2id

Julklappslista.txt
http://textuploader.com/5u2i1
Citera
2015-12-16, 07:43
  #3
Medlem
lasternassummas avatar
Jag tycker din lösning ser helt ok ut, men…
Har dom förbjudit er att dokumentera och skriva kommentarer?

Jag vill bara nämna några av fördelarna med kommentarer.

Inledande kommentar
En inledande kommentar i klassen som beskriver vad det hela går ut på är trevligt.
Man öppnar klassen, läser och vet vad det handlar om.

Kommentar av varje metod
Varje metod ska inledas med en kommentar som anger:
– Vad metoden gör.
– Vad metoden har för indata/parametrar.
– Vad metoden producerar för resultat.

Om du kommenterar upp koden får du godkänt av mig!
Jag har inte testat så noga, men jag utgår från att du gjort det.

mvh/Bo
Citera
2016-03-28, 12:49
  #4
Medlem
rjonssons avatar
Jag hade använt try with resources, https://docs.oracle.com/javase/tutor...urceClose.html
Så ser du alltid till att resursen alltid stängs. Jag hade även gjort metoder som inte används av andra "private", även julklappsbarn och koordinater hade jag gjort privata.
Citera
2016-04-01, 22:38
  #5
Medlem
PhilDunphys avatar
Citat:
Ursprungligen postat av rjonsson
Jag hade använt try with resources, https://docs.oracle.com/javase/tutor...urceClose.html
Så ser du alltid till att resursen alltid stängs. Jag hade även gjort metoder som inte används av andra "private", även julklappsbarn och koordinater hade jag gjort privata.

Pluggat civ. ing 4 år där java står för 90% av språkbruket. Aldrig sett try with resources innan. Fan vad bra det är! Redan ändrat alla mina try-satser i projektet! Alltid lär man sig något nytt på flashback.
Citera
2016-04-02, 15:05
  #6
Medlem
rjonssons avatar
Kul att kunna vara till hjälp.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback