Array mit unterschiedlichen Datentypen ausgeben...

ohmp2007

Mitglied
Hallo Leute,

nach langem rum gegoogel habe ich mich dennoch entschieden mich hier anzumelden und meine Fragen und Hilfe den Usern hier anzubieten.

Bin zwar in java ein Anfänger werde aber mein bestes tun. Habe ein Standard Problem. Und zwar habe ich ein Array was ich mit int und string befülle.

Und ich möchte dies auch auf meiner Konsole ausgeben, allerdings zeigt er mir immer den Speicherplatz an, anstatt mir das auszugeben was ich implementiert habe.

So sieht nun mein Code aus:

Java:
Aufgabe [] marr = new Aufgabe();

marr[0] = new Aufgabe(4, "Golf");
marr[1] = new Aufgabe(5, "Golf");

for (int i=0; i<marr.length; i++){
   Syso(marr[i]);
 
Ich werde es probieren....

Habe schon bevor ich deinen link für die googel suche erhalten habe schon danach gegoogelt 🙂 komme aber nicht drauf. Muss mal in meine Java als erste Programmiersprache schauen ob ich dort was finde....
 
Du musst die toString() Methode deiner Aufgabe Klasse Überschreiben.
Java:
public String toString(){

   String str = ... // Hier erstellst du einen String der das enthält was du ausgeben willst.
   return str;
}
 
@ Final Striker


hmmmm. das heisst dass ich dort das angeben muss... bsp. die 4 die in einem String konvertiert werden muss? oder kann ich ihm es so beibringen dass er auf das array zugreifen soll und sich die, Werte/Parameter aus dem jeweiligen Array holen soll!?

Sorry nochmal dass ich JAVA noch nicht checke.... 🙂
 
Hier ein kleines Beispiel:

Java:
public class Person {

	private String name;
	private String vorname;

	public Person(String vorname, String name) {
		this.vorname = vorname;
		this.name = name;
	}

	@Override
	public String toString() {
		return "Person: " + vorname + ", " + name;
	}

	public static void main(String[] args) {
		Person person = new Person("Max", "Muster");
		System.out.println(person); // Ausgabe --> Person: Max, Muster
	}
}
 
Ok, das habe ich nun geschafft! Ist ganz einfach wenn man weiss wie man es anwenden muss!!! 🙂

Nächstes Problem probieren gerade die compareTo Methode anzuwenden. Hier mein Coding.... Er soll alles sortieren, macht er aber nicht :-(

Java:
import.java.util.*;

class Material implements Comparable <Object>{
int matnr;
String name;

Material (int matnr, Strin name){
this.matnr=matnr;
this.name=name;
}

public int comapreTo(Object o)[
Material mref = (Material) o;
int i=0,

if(this.matnr <=mref.matnr){
i=-1;
}
else{
i=+1;
}
return i;
}

public Strinf toString(){
return matnr+ "," + name;
}

public static void main(String[] arg){

Material [] marr = new Material[4];

marr[] = new Material(4, "Golf");
marr[] = new Material(2, "Beetle");

Arrays.sort(marr);

for (int i=0; i<marr.length; i++){
   Syso(marr[i]);
 
Zuletzt bearbeitet:
Kommt mir das nur so vor, oder fehlt da ein bisschen Code?
Und rück bitte den Quellcode richtig ein, das macht das ganze sehr viel leserlicher....
 
Zuletzt bearbeitet von einem Moderator:
Konnte leider nicht den Quellcode aus Eclipse raus kopieren habe kein Internet an diesem Rechner, musste deswegen alles nochmal abschreiben! 🙂

Das ist der gesamte Quellcode. Sollte so passen....
 
interface Comparable... hast du das selber geschrieben? Das darfst du nicht machen. Das gibt es schon, du musst einfach das vorhandene implementieren..
 
@ARadauer ok habe es jetzt gemacht! der sortiert nach int Werten. Wie kann ich es managen dass er nach name sortiert?
 
Zuletzt bearbeitet:
compareTo anders implementieren oder einen separaten Comparator?
ganz nach Lehrbruch zu einem elementaren Thema..
 
Ändere auch noch von "implements Comparable<Object>" in "implements Comparable<Material>". In der compareTo-Methode änderst Du den Parametertyp von Object nach Material. Das casten auf Material entfällt dadurch und Deine Methode ist sehr viel typsicherer, was das Auftreten von ClassCastExceptions verhindert.

Und nach Strings sortieren ist ganz leicht. String implementiert nämlich selbst Comparable<String>. D.h. du holst Dir einfach die Namen und ruftst deren compareTo-Methode auf. Einzige Voraussetzung ist, dass die Namen nicht null sind. Falls doch, musst Du das prüfen und entsprechend reagieren. Die einfache Variante Deiner compareTo-Methode für die Sortierung nach Namen sieht damit so aus:
[Java]
public int compareTo(Material that) {
return this.name.compareTo(that.name);
}
[/Java]
 
Zuletzt bearbeitet von einem Moderator:
> was das Auftreten von ClassCastExceptions verhindert.
verringert,

auftreten könnten sie schon noch falls man 'raw type' benutzt, also Generics wegläßt 😉
 
> was das Auftreten von ClassCastExceptions verhindert.
verringert,

auftreten könnten sie schon noch falls man 'raw type' benutzt, also Generics wegläßt
Ok, Ok, es wird ClassCastException nur bei direktem Aufruf aus dem eigenen Code heraus verhindert. Ansonsten bitte die Warnings des Compilers beachten und möglichst nicht mit raw types arbeiten.
 

Neue Themen


Zurück
Oben