# Brauche dringend hilfe!



## vespasommer (5. Feb 2012)

Hallo :bahnhof:


also ich bin absolute java anfängerin habe aber ein kleineS Problem, dass ich auf keinen Fall selber lösen kann.

Vielleicht kann mir einer von euch schnell helfen. Und zwar habe ich folgende Aufgabe:

In der Klasse "Staedtesuche" sollen Sie die Methoden "sucheStaedte" und "leseDatei" so ausfüllen, dass die Methode main funktioniert.

Das Programm soll zuerst die Textdatei in eine Variable vom Typ ArrayList<Stadt> einlesen (jede Zeile ist eine Stadt) und anschließend die Stadt suchen, die der Methode "sucheStaedte" als Parameter übergeben wurde. Bei erfolgreicher Suche soll der Text "gefunden" und bei nicht erfolgreicher Suche "nicht gefunden" auf der Console ausgegeben werden.

Die Methode "main" darf nicht verändert werden.

UND FOLGENDE QUELLTEXTE SIND NOCH BEIGEFÜGT:

KLlasse Stadt: 


```
public class Stadt {
	String name;
	
	public Stadt(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}
```
Klasse Staedtenamen:


```
import java.io.IOException;
import java.util.ArrayList;


public class Staedtesuche {
	ArrayList<Stadt> staedte = new ArrayList<Stadt>();

	public static void main(String[] args) throws IOException {
		Staedtesuche suche = new Staedtesuche();
		
		suche.leseDatei();
		suche.sucheStaedte(new Stadt("Heilbronn"));
	}

	private void sucheStaedte(Stadt stadt) {
		// TODO Auto-generated method stub
		
	}

	private void leseDatei() throws IOException {
		// TODO Auto-generated method stub
		
	}

}
```

wenn mir einer von euch zeigen könnte wie ich das am besten mache und mir vielleicht den fertigen text zeigen.


Vielen Dank, euere Vespina.


----------



## Marcinek (5. Feb 2012)

Wieviel bezahlst du für einen fertigen Text?

Sonst suche mal nach CSV Parser


----------



## njans (5. Feb 2012)

Also wenn du jemanden suchst, der dir das Programm schreibt und dann erklärt, dann bist du wohl in der Jobbörse besser aufgehoben. Generell ist dieser Bereich des Forums da, um Leuten zu helfen, nicht ihnen die Arbeit abzunehmen. 

Wenn du Ansätze gemacht hast und nicht mehr weiter weißt, wenn dein geschriebener Code nicht so funktioniert wie gewollt, dann bist du hier richtig.


----------



## HimBromBeere (5. Feb 2012)

Also mal ehrlich... den "fertigen TExt" wirst du hier nicht finden... bestenfalls Anregungen, was du tun könntest. 

Btw: schreib deinen Code doch mal bitte in anständige JAVA-Tags und füge ein paar Zeilenumbrüche ein



EDIT: hat sich erledigt..


----------



## vespasommer (5. Feb 2012)

BOAH, bin ne arme studentin. 

Ich dachte hier hilft man sich auch ohne geld


----------



## vespasommer (5. Feb 2012)

Geht ja nicht darum mir die arbeit abzunehmen, stehe einfach bisschen unter druck und muss abliefern, kenne mich aber wie gesagt nicht aus.

naja,..


----------



## HimBromBeere (5. Feb 2012)

Tut man auch, aber wie du gesagt heast: "helfen" und nicht "die Arbeit abnehmen"...


Schau dir erstmal die Datei Städte an, welche Variablen sind da denn außer einem Namen drin, die du einlesen müsstest? Davon abhängig musst du deine Klasse Stadt um die jeweiligen Attribute erweitern.


----------



## vespasommer (5. Feb 2012)

Sind lediglich Städtenamen drin, zeilenweise aufgeführt. ja und da hakt es ja ich weiss nicht um was ich erweitern muss.
ich brauch erst etwas um die namen einzulesen und danach eine funktion um die städte zu suchen.


----------



## L-ectron-X (5. Feb 2012)

Das Problem fängt doch schon bei der Textdatei an. Wie sieht die denn aus?
Das Auslesen der Datei muss nämlich ihrer Struktur angepasst werden.


----------



## vespasommer (5. Feb 2012)

Hamburg
München
Berlin
Wuppertal
Leipzig
Hannover


...usw so sieht die .txt datei aus.


----------



## HimBromBeere (5. Feb 2012)

Holft dir das evtl.: http://www.java-forum.org/allgemeine-java-themen/130329-java-datei-einlesen.html?


----------



## L-ectron-X (5. Feb 2012)

Die Datei kann man bspw. mit [JAPI]Scanner[/JAPI] einlesen.
Eine Liste kann man mit einer for-Schleife durchsuchen.
Eine Bedingung abklopfen kann man mit einer if-Abfrage.


----------



## njans (5. Feb 2012)

Nun lesen einer Datei kann man mit: 

```
BufferedReader reader = new BufferedReader(new FileReader(new File("C:/whatever/myFile.txt")));
```
machen.
Anschließend ließt man mit reader.readLine() immer den nächsten String (bis zum Zeilenumbruch) und erhält diesen als Rückgabewert. Das macht man generell so lange, bis der Rückgabewert null ist, dann ist die Datei zuende gelesen.


----------



## vespasommer (5. Feb 2012)

Danke schon mal für die tipps. ich muss mir das jetzt mal genauer zu gemüte führen.


----------



## vespasommer (5. Feb 2012)

@HimBromBeere was ist ein "JFileChooser"


----------



## njans (5. Feb 2012)

"JFileChooser" ist eine Java Klasse, welche dir Erlaubt mittels einer grafischen Oberfläche einen Dialog zu erstellen, der den Nutzer eine Datei zum Speichen/öffnen aussuchen lässt.


----------



## Marcinek (5. Feb 2012)

vespasommer hat gesagt.:


> @HimBromBeere was ist ein "JFileChooser"



Google: JFileChooser?

???:L


----------



## Landei (5. Feb 2012)

[c]sucheStaedte[/c] ist billig:


```
private void sucheStaedte(Stadt stadt) {
        if(staedte.contains(stadt)) {
            System.out.println("gefunden");
        } else {
            System.out.println("nicht gefunden");
        }
    }
```


----------



## njans (5. Feb 2012)

Hmm wenn man contains nutzen will, dann sollte auch schon equals der Klasse Stadt  überschreiben, sonst wird da wohl nie  irgendeine Stadt gefunden.


----------



## L-ectron-X (5. Feb 2012)

Wollte ich auch meinen.
Wenn man nicht contains() nutzen möchte, kann man die Liste auch durchsuchen:

```
private void sucheStaedte(Stadt stadt) {
        for(int i = 0, j = staedte.size(); i < j; i++) {
            Stadt eineStadt = staedte.get(i); //Objekt an Index-Position i aus der ArrayList auslesen
            String stadtName = eineStadt.getName(); //Namen der Stadt holen
            if(stadtName.equals(stadt.getName())) { //ausgelesenen String mit dem Inhalt/Namen des übergebenen Objektes vergleichen
                System.out.println("gefunden");
                return;  //nach Finden abbrechen, keine weiteren (doppelten) Einträge suchen
            }
        }
        System.out.println("nicht gefunden");
    }
```


----------

