Problem mit compareTo

Status
Nicht offen für weitere Antworten.
K

Kenny77

Gast
Hallo an alle die das hier lesen!
Habe etwas Probleme mit meinem Projekt!
Es sieht folgendermaßen aus!
Es geht um eine Busfahrplan der eine Abfrage nach Ort und Zeit beinhaltet.
Fragen kommen unten!
Und noch ein fettes sorry aber ich kenn mich nicht mit dem BBCode-Tags aus. Hoff man kann es trotzdem lesen.

Code:
import java.util.*;
import java.awt.*;


public class Buslinie implements Comparable {
	
	int Nummer; 
		
	
	//Testarry deklariert
	String haltestellen [] = new String[4];{
	 haltestellen[0] = "Fh";
	 haltestellen[1] = "Kaserne";
	 haltestellen[2] = "Am Stocket";
	 haltestellen[3] = "Stadtmitte";
	 }
	//Testarray deklariert
	String[][] abfahrtszeiten = new String [4][2];{
	abfahrtszeiten[0][0]= "08.00";
	abfahrtszeiten[0][1]= "10.00";
	abfahrtszeiten[1][0]= "08.05";
	abfahrtszeiten[1][1]= "10.05";}
	

	int t=getNummer();

	//Abfrage namens abfrage1 mit zwei String-Parametern und einem Stringrückgabetyp
	String abfrage1 (String h, String t){
		boolean gefunden = false;
		int i;
		
		//hier wird die Haltestelle herausgefunden
		for(i=0;i<haltestellen.length;i++){
			if (haltestellen[i].equals(h))
				gefunden = true;
			else break;
		}
		
	if (gefunden){
		int index;
		index=i;
		int j = 0;
		
		//hier wird zur Haltestelle die Abfahrtszeiten bestimmt
		for(j=0; j<abfahrtszeiten[index][j].length();j++){
			
                 //Ab hier ist mir nicht mehr klar wie ich das machen soll!!!
                    while(!(abfahrtszeiten[index][j].equals(t))){
				public Sting compareTo(t){
					HILFE!!!
				}
			}
			return abfahrtszeiten[index][j];
		}
	}
	

	


}
}

Also mein Problem ist das ich zu einem ausgewählten Abfahrtsort die Abfahrtszeiten ausgeben möchte!
Mir wurde das so erklärt ich sollte eine while-Schleife machen und ein compareTo.
Aber wenn ich Comparable implementiere muss ich ja die compareTo-Methode überschreiben oder?
Hatt vielleicht jemand ne Idee?
[/code]
 
K

Kenny77

Gast
Ok des mit BBCode-Tags hat doch geklappt!
Die letzte while und das compareTo kommen so von mir. Stimmt aber nicht!
Bitte um vorschläge, ihr würdet mir wirklich sehr damit helfen!
 
S

SlaterB

Gast
für Comparable sehe ich wenig Sinn,
du willst doch nicht deine eigene Klasse selber vergleichen sondern nur bestimmte Strings im Array

ist t ein Zeitstring?
wahrscheinlich musst du nun
abfahrtszeiten[index][j].compareTo(t)
ausführen, um die Abfahrtszeit(en) zu bestimmen, die vor oder nach t liegen?

--------

übrigens: nicht an die Umsetzung denken sondern erstmal klären, was überhaupt passieren soll!

> zu einem ausgewählten Abfahrtsort die Abfahrtszeiten ausgeben möchte

alle Abfahrtszeiten stehen in einem Array, du musst sie nur ausgeben,
dazu bräuchstet du gar keinen Vergleich
 
K

Kenny77

Gast
Ok falsche Fragestellung
Es wird der Abfahrtsort und die Zeit angegeben.
Wie z.B. ich stehe an einer Bushaltestelle und will sehen wann die nächsten Busse kommen.
Also muss er ja irgendwie erst die Zeit auch finden.
Das wollte ich mit compareTo machen. und hald so lange suchen bis die zeit nicht mehr kleiner ist!
Wie würde der Code dazu aussehen. Könnte jemand den kurz tippen?
 
K

Kenny77

Gast
Ja t ist ein Zeitstring.
Wenn ich doch compareTo nutzen will muss ich doch Comparable implementieren.
Meinst du mit der Klasse vergleichen dass ich das Comparable nicht bei der Klasse hinschreiben sollte.
Wo dann?
 
S

SlaterB

Gast
zum 1. Post:

ne, den sollst ja du tippen ;)
string.compareTo(string) ist alles was du brauchst,

im Idealfall liefert das die unterschiedliche Zahlen je nach Zeit,
so dass du den String mit der niedrigsten Abweichung nehmen kannst,

fallso immer nur -1, 0 oder +1 zurückgegeben wird (kleiner, gleich, größer)
dann musst du eben bei mehreren Kandidaten diese untereinander vergleichen

-------

zum 2. Post:

> Wenn ich doch compareTo nutzen will muss ich doch Comparable implementieren.

wie gesagt: nur Strings vergleichen, da gibts da schon,
deine eigene Klasse brauchst du nicht vergleichen
 
K

Kenny77

Gast
Danke.
D.h. ich muss gar kein Comparable implementieren, oder?
Aber irgendwie raff ich das immer noch nicht!
soll ich das compareTo in meine while Schleife packen?
Also while(abfahrtszeiten[index][j].compareTo(t)){
wie sieht dann ungefähr der rumpf aus?
}
Sorry aber ich weiß es wirklich nicht und in meinem Buch ist das auch so schlecht erklärt. zumindest für meinen fall.
 
S

SlaterB

Gast
das braucht man nix wissen, das ist reine Denkaufgabe:
* du hast in der Hand einen blauen Klotz einer Zahl drauf (z.B. 7)
* vor dir liegt eine Reihe roter Bauklötzchen mit verschiedenen Zahlen, z.B. 2, 5,6,20
* du hast die Fähigkeit, jeweils einen Klotz in jede Hand zu nehmen und deren beiden Zahlen zu vergleichen,

wie gehts du vor, um den roten Klotz mit der größten Zahl kleiner deiner 7 zu finden?

kannst du sowas auch nicht ohne ein Buch über Bauklötzchen-Vergleiche? ;)
das hat mit Programmieren erstmal wenig zu tun,
denke logisch nach was zu tun ist
 
K

Kenny77

Gast
Das ist ja nicht mein Problem!
Aber wie geht das dann mit 1,0,-1
kannst du mir da nicht wenigstens ein Code-Beispiel geben!
Bitte ich bin schon voll am verzweifeln!
Und passt des jetzt überhaupt mit der while?
Das würd ja heißen tu etwas solange bis es übereinstimmt.
 
S

SlaterB

Gast
> Das ist ja nicht mein Problem!

<->

> Und passt des jetzt überhaupt mit der while?
> Das würd ja heißen tu etwas solange bis es übereinstimmt.

ist dir das Vorgehen nun klar oder nicht?..
du musst ja auf jeden Fall mal eine ganze Reihe Zeiten (Bauklötze) anschauen,
also ist eine Schleife nicht verkehrt, aber längst nicht alles


mich kannst du noch so bitten,
auf ganz sture 'ich kann nix, bitte alles fertig geben'-Fragen reagiere ich umso allergischer ;)

stelle (vielleicht in einem neuen Topic) deine Frage zivilisiert freundlich und vollständig,
dann machts vielelicht wer anders,



oder fange an selber zu überlegen,
ein sinnvoller erster Schritt wäre z.B., in einer Schleife das Array zu durchlaufen und nur jeweils
t, die ArrayZeit + den Vergleichs-int-Wert mit System.out.println auszugeben,
sowas übt schon ungemein,

in einem Schritt gleich die Lösung haben zu wollen kann ja nicht gut gehen, selbst wenn man es selber macht
 
K

Kenny77

Gast
Mit "das ist ja nicht mein Problem" mein ich das mir das vorgehen im allgemeinen schon klar ist.
Nur wie ich es umsetze ist mir nicht klar!
Ich weiß schon dass, die einstellung ich kann nix nicht die richtige ist, jedoch brauch ich jetzt schon ewigkeiten um dieses kleine Problem zu bewältigen!
Ich versuchs nochmal bis heut abend dann stell ich nochmal fragen!
Bitte nicht böse sein.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben