Hilfe! Probleme ohne Lösungsidee...

Status
Nicht offen für weitere Antworten.

kraefti

Mitglied
Hi zusammen!
Ich bin neu hier und habe ein Java-Problem. Es gibt hier ein Programm, welches Reisen nach dem Datum sortiert ausdruckt... im Moment wird aufsteigend sortiert - das ist aber zukünftig nicht gewollt! Ich denke die richtigen Code-Strecken gefunden zu haben. Kann mir jemand von Euch helfen und mir sagen, wie ich die Sortierung descending hinbekomme?


Code:
public class XY implements IModuleProvider {

	//Comparator for ordering trips by date
	Comparator TRIP_DATE_ORDER_ASC = new Comparator() {
		public int compare(Object o1, Object o2) {
			zTrip t1 = (zTrip) o1;
			zTrip t2 = (zTrip) o2;
			return t1.depDate.compareTo(t2.depDate);
		}
	};

	//Comparator for ordering receipts by date
	Comparator RECEIPT_DATE_ORDER_ASC = new Comparator() {
		public int compare(Object o1, Object o2) {
			zReceipt r1 = (zReceipt) o1;
			zReceipt r2 = (zReceipt) o2;
			return r1.recDate.compareTo(r2.recDate);
		}
	};

//sort trips by date ascending
Collections.sort(zTrips, TRIP_DATE_ORDER_ASC);
//sort receipts by date ascending
Collections.sort(zReceipts, RECEIPT_DATE_ORDER_ASC);

vielen herzlichen Dank!
Sebastian ???:L
 
Code:
das ist doch offensichtlich statt

return r1.recDate.compareTo(r2.recDate); 

eher

return -r1.recDate.compareTo(r2.recDate); 

oder

return r2.recDate.compareTo(r1.recDate);
 
Hi,

wie bekomme ich aus einem String in Java z.B. Punkte raus? Bsp.: Ich habe ein Datum in einem String 22.02.2007
wenn ich jetzt meinen sortiercode verwende dann sortiert der nur nach den ersten beiden ziffern... :?:
 
wenn alle dort den Punkt haben, dann brauchst du ihn nicht entfernen,
es wird schon bis zum Ende des Strings durchvergleichen..

ansonsten String.replaceAll,
ein guter Zeitpunkt erstmal in ein Lehrbuch zu schauen
 
Hi zusammen,
wie es öfter so ist im Leben, muss ich hier in der Firma einen in Java erstellten Reisekostenbericht überarbeiten und habe zugegebener Weise nicht wirklich viel Ahnung von Java - wie Ihr vielleicht bereits bemerkt habt.

Das Problem ist folgendes:
Ich habe einen Vector zTrips

Befüllt wird er ungefähr so:
Code:
zTrip.tripNumber = trip.getFieldAsDisplayString("TRIPNUMBER", true);
				zTrip.tripGuid = tripGuid;
				zTrip.priv_nights = trip.getFieldAsInt("NO_NIGHT");
				zTrip.depDate = trip.getFieldAsDisplayString("DEP_DATE",
						true);
				zTrip.depTime = trip.getFieldAsDisplayString("DEP_TIME",
						true);
				zTrip.arrDate = trip.getFieldAsDisplayString("ARR_DATE",
						true);
				zTrip.arrTime = trip.getFieldAsDisplayString("ARR_TIME",
						true);
				zTrip.location = trip.getFieldAsDisplayString("LOCATION",
						true);
				zTrip.reason = trip.getFieldAsDisplayString("CUSTOMER",
						true);
				zTrip.pd_food = pd_food;
				zTrip.pd_housing = pd_housing;
				zTrip.pd_mileage = pd_mileage;
				zTrip.sum_breakfast = sum_breakfast;
				zTrip.sum_lunch = sum_lunch;
				zTrip.sum_dinner = sum_dinner;
				
				//add travel activities
				zTrip.activity = this.getActivitiesText(trip.getFieldAsDisplayString("T_ACTYPE", true));
				
				zTrips.addElement(zTrip);

Dieses Array soll nun sortiert werden nach dem Datum "depDate". So wie es bisher realisiert ist (siehe weiter oben im Thread) geschieht folgendes: (Ausgabe)
Datum Reisenummer Belegnummer
18.01.2007 13 001
18.01.2007 13 002
18.02.2007 14 001
29.01.2007 16 001

Wie kann ich das richtig sortieren? Sorry - brauche echt Eure Hilfe!

Danke und Gruß
Sebastian[/img]
 
wenn die Dati wirklich Strings sind, dann dürfte doch vorher auch die aufsteigende Sortierung nicht funktioniert haben?

du musst die Strings auftrennen in Jahr, Monat und Tag und inhaltlich nach denen sortieren,
oder echte Date/ Calendar-Objekte aus den Strings erstellen,
SimpleDateFormat hilft dabei

diese Klasse + Suchbegriffe wie 'Datum parsen' sollte hier im Forum oder bei google Beispiele bringen
 
stimmt die Sortierung hat vorher auch nicht gepasst...

Ich habe mir nun folgendes überlegt - würde das wohl funktionieren?

Code:
//Variable
public date sortDate;

//neue Methode um String in Datum zu konvertieren...

public Date convert (String) 
{
		SimpleDateFormat format = new SimpleDateFormat ("dd.mm.yyyy");
		String toConvert = String;
		sortDate = format.parse (toConvert);
		return sortDate;
};

//befüllen des Vektors über Klasse zTrip
zTrip.sortDate = convert(zTrip.depDate);

zTrips.addElement(zTrip);
				
//wenn der Vektor voll ist...  sort trips by date ascending
Collections.sort(zTrips, TRIP_DATE_ORDER_ASC);


//Comparator for ordering trips by date
	Comparator TRIP_DATE_ORDER_ASC = new Comparator() {
		public int compare(Object o1, Object o2) {
			zTrip t1 = (zTrip) o1;
			zTrip t2 = (zTrip) o2;
			return t1.sortDate.compareTo(t2.sortDate);
 
Code:
public Date convert (String)
Das alleine liefert dir schon einen Kompilerfehler,
da du den Namen des formalen Parameters nicht angegeben hast.

Und wo wird dein convert denn überhaupt aufgerufen? :autsch:
 
na in Zeile 16 dachte ich!?

den formalparameter kann ich auch s nennen - oder eben toConvert oder nicht?
 
Anonymous hat gesagt.:
na in Zeile 16 dachte ich!?

Ohh! Sorry, hab' ich übersehen.

Code:
public Date convert (String dateString) { 
      SimpleDateFormat format = new SimpleDateFormat ("dd.mm.yyyy"); 
      sortDate = format.parse (dateString); 
      return sortDate; 
};
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben