Minimum eines String-Arrays

Status
Nicht offen für weitere Antworten.

sebjensen

Mitglied
Hallo,

ich hoffe, dass ihr mir helfen könnt, da ich mit dieser Aufgabe vom Sinn her überhaupt nichts anfangen kann. Ich bin Student und studiere Informatik. Dieses Semester beschäftigen wir uns ein wenig mit Java.

Uns wurde ein Algorithmus vorgestellt, der in einem gegebnen Array vin ganzen Zahlen das Minimum bestimmt. Nun sollen wir dieses Algorithmus derat modifizieren, dass das Minimum in einem String Array (String[]) und allgemeiner in einem Arrayvom Typ Comparable[] bestimmt wird.

Leider ist mir nicht klar, was genau das Minimum eines String-Arrays ist und somit, kann ich die Aufgabe auch nicht bearbeiten. Ich hoffe, dass ihr mir sagen könnt, was das besagte Minimum ist.

Danke schon mal.


Code:
class MinimumArrayInteger {
	
  public static void main ( String[] args ) {

    int[] array = new int[20];
    array[0] = (int)(Math.random() * 1000);
    array[1] = (int)(Math.random() * 1000);
    array[2] = (int)(Math.random() * 1000);
    array[3] = (int)(Math.random() * 1000);
    array[4] = (int)(Math.random() * 1000);
    array[5] = (int)(Math.random() * 1000);
    array[6] = (int)(Math.random() * 1000);
    array[7] = (int)(Math.random() * 1000);
    array[8] = (int)(Math.random() * 1000);
    array[9] = (int)(Math.random() * 1000);
    array[10] = (int)(Math.random() * 1000);
    array[11] = (int)(Math.random() * 1000);
    array[12] = (int)(Math.random() * 1000);
    array[13] = (int)(Math.random() * 1000);
    array[14] = (int)(Math.random() * 1000);
    array[15] = (int)(Math.random() * 1000);
    array[16] = (int)(Math.random() * 1000);
    array[17] = (int)(Math.random() * 1000);
    array[18] = (int)(Math.random() * 1000);
    array[19] = (int)(Math.random() * 1000);

    int   min;
    min = array[ 0 ];

     for ( int index = 0; index < array.length; index++ ) {
    	 if ( array[ index ] < min )
    		 min = array[ index ] ;
      }
    System.out.println("Das Minimum dieses Arrays ist: " + min );
    }
  }
 

Andre_

Mitglied
Compareable ist ein Java-Interface ...

die Klassen die dieses Interface implementieren haben eine Methode compareTo(Object obj) welche -1 zurückliefert wenn das Object kleiner als das übergebene ist,0 wenn beide gleich sind und 1 wenn das übergebene größer ist ...

Wie das diese Funnktion realisiert, kann dir egal sein ... du rufst nur auf die Objekte von Typ Compareable diese Funktion auf.

also zum Beispiel ((Compareable) array[1]).compareTo(array[2]);

den Rest solltest du jetzt allein hinbekommen sonst ist Informatik wohl nicht dein Fach *ggg*
 

sebjensen

Mitglied
Code:
package edu.cau.informatikII.serie01;

class MinimumArrayComparable implements Comparable {
	
  public static void main ( String[] args ) {

    String[] array = new String[10];
    array[0] = "Test";
    array[1] = "Quelle";
    array[2] = "Haus";
    array[3] = "Baum";
    array[4] = "Schornstein";
    array[5] = "Qualle";
    array[6] = "Donaudampfschifffahrtsgesellschaft";
    array[7] = "Ebay";
    array[8] = "Universität";
    array[9] = "Kiel";

    String   min;
    min = array[0];

     for ( int index = 0; index < (array.length - 1); index++ ) {
    	 if (((Comparable)array[index]).compareTo(array[index+1]) == -1) {
    		 min = array[index+1];
    	 }
    	 
    	 
      }
    System.out.println("Das Minimum dieses Arrays ist: " + min );
    }

public int compareTo(Object arg0) {
	// TODO Auto-generated method stub
	return 0;
}
  }

Leider läuft das Programm nicht richtig. Kann mir mal jemand eine kurzen Tipp geben. Ich bin schließlich neu hier auf dem Java-Sektor.
 
B

bygones

Gast
ich versteh das so, dass nicht deine Klasse das Interface implementieren muss, sondern dein Algorithmus muss nur damit zurechtkommen

also so etwa:
Code:
public class ArrayMin {
  public static Comparable getMinimum(Comparable[] array) {
    Comparable minimum = array[0];

    for(int i = 1; i < array.length; i++) {
      if(array[i].compareTo(minimum) < 0) {
         minimum = array[i];
      }
    }

    return minimum;
  }
}
 

Leroy42

Top Contributor
Du vergleichst jeweils ein Element mit seinem Nachfolger und merkst dir nicht das Minimum
Code:
     for ( int index = 0; index < (array.length - 1); index++ ) { 
        if (((Comparable)array[index]).compareTo(array[index+1]) == -1) {
           min = array[index+1];

Also vergleichen mit dem jeweiligen Minimum und Schleife wieder bis < array.length laufen lassen.

Code:
     for ( int index = 0; index < array.length; index++ ) { 
        if (((Comparable)array[index]).compareTo(min) == -1) {
           min = array[index];

Das Comparable-Interface muß nur von den Klassen implementiert sein, dessen
Instanzen du vergleichen willst.

Dein MinimumArrayComparable brauchst du nicht Comparable implementieren zu lassen
 

sebjensen

Mitglied
Okay. Aber ich versteh nun nicht warum in meinem Beispiel "Schornstein" das Minimum sein sollte.

Code:
    array[0] = "Test";
    array[1] = "Quelle";
    array[2] = "Haus";
    array[3] = "Baum";
    array[4] = "Schornstein";
    array[5] = "Qualle";
    array[6] = "Donaudampfschifffahrtsgesellschaft";
    array[7] = "Ebay";
    array[8] = "Universität";
    array[9] = "Kiel";
 

sebjensen

Mitglied
Leroy42 hat gesagt.:
Sollte es auch nicht.

Poste doch mal die Schleife, die die Vergleiche durchführt.


Ich habe einfach deine Schleife, die du geschrieben hast genommen und eingefügt, somit entsteht der folgende Quelltext:

Code:
class MinimumArrayComparable {
	
  public static void main ( String[] args ) {

    String[] array = new String[10];
    array[0] = "Test";
    array[1] = "Quelle";
    array[2] = "Haus";
    array[3] = "Baum";
    array[4] = "Schornstein";
    array[5] = "Qualle";
    array[6] = "Donaudampfschifffahrtsgesellschaft";
    array[7] = "Ebay";
    array[8] = "Universität";
    array[9] = "Kiel";

    String   min;
    min = array[0];


    for ( int index = 0; index < array.length; index++ ) {
       if (((Comparable)array[index]).compareTo(min) == -1) {
          min = array[index]; 
    	 }
    	 
    	 
      }
    System.out.println("Das Minimum dieses Arrays ist: " + min );
    }
  }
 

Andre_

Mitglied
deathbyaclown hat gesagt.:
ich versteh das so, dass nicht deine Klasse das Interface implementieren muss, sondern dein Algorithmus muss nur damit zurechtkommen

also so etwa:
Code:
public class ArrayMin {
  public static Comparable getMinimum(Comparable[] array) {
    Comparable minimum = array[0];

    for(int i = 1; i < array.length; i++) {
      if(array[i].compareTo(minimum) < 0) {
         minimum = array[i];
      }
    }

    return minimum;
  }
}

Der Code ist schon absolute Richtig!!!!!

compareTo ist nicht mehr auf -1, 0, 1 festgelegt ... sondern arbeitet jetzt mit <0,0,>0

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html#compareTo(T)
 

Leroy42

Top Contributor
Mein Code mit dem was André zu Recht geschrieben hat, funktioniert

Code:
if (((Comparable)array[index]).compareTo(min) < 0) {
 

sebjensen

Mitglied
Okay. Jetzt gibt er auch "BAUM" zurück. Wunderbar. Ihr habt mir sehr geholfen. Aber nun habe ich noch ein kleines Problem. Ich habe ja nun schon mit Comparable[] gearbeitet. Jetzt ist nur die Frage kann ich das ganze auch nurmit String ohne Comparable mache oder ist dies nicht möglich?
 

Leroy42

Top Contributor
Sicher, denn die Methode compareTo ist ja schließlich bereits in der Klasse String
und der Compiler weiß das auch.

Du kannst also einfach schreiben:

Code:
if (array[i].compareTo(min) < 0)

dbac hat nur deshalb den cast eingebaut, um dir den Allgemeinfall zu verdeutlichen,
wenn dein Array ein Object[] wäre. Dann weiß der Compiler ja nicht, daß die Instanzen
vom Typ einer Klasse sind, die tatsächlich auch Comparable implementiert
(die Methode compareTo) besitzen
 

sebjensen

Mitglied
Ich muss euch doch noch einmal kurz belästige. Sorry! :oops:

Code:
package edu.cau.informatikII.serie01;

class MinimumArrayComparable {
	
  @SuppressWarnings("unchecked")
public static void getminimum(Comparable[] array) {

    Comparable min;
    min = array[0];


    for ( int index = 0; index < array.length; index++ ) {
       int compareTo = ((Comparable)array[index]).compareTo(min);
       if (compareTo < 0) {
    	   min = array[index]; 
    	 }
    	 
    	 
      }
    System.out.println("Das Minimum dieses Arrays ist: " + min );
    }
  }



Warum geht das nicht. Ich habe eine Testdatei:


Code:
package edu.cau.informatikII.serie01;

public class MinimumArrayComparableTestDrive {
	
 public static void main(String [] args) {
	 
    Comparable[] array = new Comparable[10];
    array[0] = "Test";
    array[1] = 5;
    array[2] = "Haus";
    array[3] = 85;
    array[4] = "Schornstein";
    array[5] = 24;
    array[6] = "Donaudampfschifffahrtsgesellschaft";
    array[7] = 83;
    array[8] = "Universität";
    array[9] = 95;
    
    MinimumArrayComparable.getminimum(array);
 }
}


Das Programm wird nun aber nicht mehr ausgeführt, die Frage ist. Was habe ich dann von Comparable. Wenn ich nicht verschiedene Typen in mein Array einbinden kann?
Danke schon mal!
 

Leroy42

Top Contributor
sebjensen hat gesagt.:
Was habe ich dann von Comparable. Wenn ich nicht verschiedene Typen in mein Array einbinden kann?
Danke schon mal!

Was soll denn das bringen? Ist zum Beispiel

85 < "Donaudampfschiffartsgesellschaft" :shock:

new JPanel < new JButton :shock:

new int[] {0} < 42 :shock:

Die Zeile
Code:
Comparable[] array = new Comparable[10];
kann nicht funktionieren, da man Interfaces nicht instanziieren kann, welcher Typ soll das auch sein?

Ein Interface ist nichts weiter als ein Versprechen, daß Instanzen von Klassen, die dieses
Interface implementieren, die im Interface deklarierten Methoden verstehen
 

Andre_

Mitglied
java.lang
Interface Comparable<T>


von Interfaces kannst du keine Instancen (also Objecte) erzeugen ... new Comparable[10] geht also nicht .. dort schreibst du dann new String[10] hin. String implementiert Compareable und ist somit vom Typ Comparable...

edit: hui du warst schneller :)
 
B

Beni

Gast
Äh? Sehrwohl kann man "new Comparable[10]" aufrufen, das generiert einen Comparable-Array der Länge 10. Falsch wäre aber "new Comparable()"...

Nicht alles lässt sich mit allem Vergleichen, in so einem Comparable-Array sollte man nur ein Typ reinschreiben - entweder nur ints, oder nur Strings, ...
 
B

bygones

Gast
Andre_ hat gesagt.:
java.lang
Interface Comparable<T>


von Interfaces kannst du keine Instancen (also Objecte) erzeugen ... new Comparable[10] geht also nicht .. dort schreibst du dann new String[10] hin. String implementiert Compareable und ist somit vom Typ Comparable...

edit: hui du warst schneller :)
das ist aber falsch... natürlich kann man keine Instanz eines Interfaces anlegen, aber eine Arraydefinition geht natürlich - d.h. Comparable[] array = new Comparable[10]; ist korrekt und geht auch.

ansonsten - wegen den versch. Typen: wie schon gesagt - überleg dir was es bringt ints und Strings zu sortieren... wie soll das gehen ?!

Der nutzen, dass die methode comparable[] definiert ist einfach, dass du ohne probleme String[] oder Integer[] oder Double[] oder was auch immer testen lassen kannst (solange die Klasse Comparable implementiert). D.h. du hast für zig versch. aufrufe nur eine Methode. Aber im array versch. Klassen zuzulassen ist unsinn
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Minimum eines Int Arrays Java Basics - Anfänger-Themen 6
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
H Minimum in einem Array bestimmen Java Basics - Anfänger-Themen 7
N Minimum ausgeben lassen Java Basics - Anfänger-Themen 5
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
B Java rekursion minimum von ein array Java Basics - Anfänger-Themen 2
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
R Erste Schritte Minimum und Maximum in Array finden Java Basics - Anfänger-Themen 29
S Minimum von 5 Werten Java Basics - Anfänger-Themen 6
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
E Minimum wird nicht ausgegeben Java Basics - Anfänger-Themen 9
M Maximum, Minimum und Mittelwert berechnen Java Basics - Anfänger-Themen 25
P Lokales Minimum- Maximum, Globales Minimum - Maximum ? Java Basics - Anfänger-Themen 4
P Minimum/Maximum aus einer Liste Java Basics - Anfänger-Themen 3
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3
S Wie kann ich den Bereich eines Integers begrenzen? Java Basics - Anfänger-Themen 2
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
B Downgrade eines bestehenden Projektes Java Basics - Anfänger-Themen 5
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
M Hilfe bei Strukturierung eines Buchungssystems Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben