Array

Status
Nicht offen für weitere Antworten.

Huelser

Mitglied
Hallo zusammen,

bin ein neuling in JAVA und wir haben von der schule eine aufgabe bekommen bei der ich massive probleme habe.
Die Aufgabe ist aus einer vorgegebene Excel-Liste mit 3 Spalten (Shop, Pächter, Umsatz) den Pächter mit dem höchsten und niedrigsten Umsatz anzeigen zulassen.
Das Problem das ich aber jetzt dabei habe ist, dass meine Ausgabe nur den Umsatz bzw. den Pächter ausgibt aber zusammen hangslos!

Java:
public class Umsatz
{
public static void test()
{
String[]shop = {"1","1","2","1","3","3","2","3","2","2","1"};
String[]paechter = {"Frisch","Fromm","Fröhlich","Frei","Abend","Bauer","Dampf","Eimer","Gabel","Hummel","Impf"};
String[]umsatz = {"1200","1300","2000","1400","1450","1350","1800","1200","1200","1000","1100"};
printall (shop, paechter, umsatz);
}

public static void sortiere(int[] x) 
   
         {
     
    
          
         for (int i=0; i < x.length-1; i++)
         for (int j=0; j < x.length-1; j++)

            if (x[j] > x[j+1]) 
                 {                      
               int data   = x[j];       //  temp mit x[j] tauschen
               x[j]       = x[j+1];     //  x[j] mit x[j+1] tauschen
               x[j+1]     = data;       //  x[j+1] mit data tauschen
              
                 }          
            } 
            


public static void main() 
   {
      
      int[] Array1 = {1,1,2,1,3,3,2,2,3,2,2,1};                                // Array mit Zahlen befüllen
      //int[] Array2 = {1200,1300,2000,1400,1450,1350,1800,1200,1200,1000,1100}; // Array mit Zahlen befüllen
      sortiere(Array1);
      //sortiere(Array2);
      for (int j=0; j<Array1.length; j++)        // sortierte Zahlen zum String hinzufügen
      //for (int i=0; i<Array2.length; i++)        // sortierte Zahlen zum String hinzufügen
         System.out.print(Array1[j]+" ");    // Liste ausgeben
         //System.out.print(Array2[i]+" ");    // Liste ausgeben
         
   } 
   
public static void printall(String[]shop, String[]name, String[]umsatz)
{
int i;
System.out.println("Umsatzliste:");

 

for(i=0; i<name.length; i++)   
System.out.println (shop[i]+" " +name[i] +" " +umsatz[i]);
}
}
Soweit bin ich schon nur i-wie weiß ich net mehr weiter! kann mir jemand helfen?
 
U

Unregistriert

Gast
ohne das böse zu meinen, aber wie wäre es mal mit einrücken und der einen oder anderen geschweiften klammer für die for schleifen???

ist ja grauenhaft das zu lesen...


ich schau es mir mal an (wenn ich es etwas formatiert hab) und sage dann ob mir was auffällt
 

Michael...

Top Contributor
Java:
public static void sortiere(int[] x) 
   
         {
     
    
          
         for (int i=0; i < x.length-1; i++)
Zunächst: Viele Leerzeilen verbessern nicht unbedingt die Lesbarkeit des Codes.

Das Problem das ich aber jetzt dabei habe ist, dass meine Ausgabe nur den Umsatz bzw. den Pächter ausgibt aber zusammen hangslos!

Zur Zeit werden weder Umsatz noch Pächter, sondern zusammenhanglos Zahlen in sortierter Reihenfolge ausgegeben.

Habt Ihr in der Schule schon Objekte behandelt? Man könnte z.B. Pächter und Umsatz in einem Objekt halten, dann hätten die automatisch einen Zusammenhang.
 

eRaaaa

Top Contributor
Zunächst: Viele Leerzeilen verbessern nicht unbedingt die Lesbarkeit des Codes.



Zur Zeit werden weder Umsatz noch Pächter, sondern zusammenhanglos Zahlen in sortierter Reihenfolge ausgegeben.

Habt Ihr in der Schule schon Objekte behandelt? Man könnte z.B. Pächter und Umsatz in einem Objekt halten, dann hätten die automatisch einen Zusammenhang.

oder man merkt sich einfach beim durchlaufen den index (in den arrays ist ja der zusammenhang gegeben, also kommt man wenn man den index vom höchten umsatzarray hat, auch an den shop und pächter)
Java:
for (int i = 0; i < umsaetze.length; i++) {
			if (Integer.parseInt(umsaetze[i]) > max) {
				max = Integer.parseInt(umsaetze[i]);
				indexMax = i; //index merken
			}
			if (Integer.parseInt(umsaetze[i]) < min) {
				min = Integer.parseInt(umsaetze[i]);
				indexMin = i;   //index merken
			}
		}
 

ARadauer

Top Contributor
ich würde nicht sortieren sondern einfach die id mit dem max umsatz und die id mit dem min umsatz suchen... Dann hast du auch den Pächter...

Versuch das mal, schreibe eine Methode die ID des Minimuns eines übergebenen Arrays zurück gibt. Dann machst du noch eine Methode für das Maximum... Dann meldest dich wieder...
 
B

bygones

Gast
uff noch keine objekte... na dann.

laufe ueber den umsatz array (muessen das strings sein ? zahlen waeren besser) und merk dir den index von dem groessten betrag bzw von dem kleinsten.

geht man davon aus, dass die arrays richtig angeordnet sind kannst du dann ueber den index den paechter und den shop ermitteln
 
U

Unregistriert

Gast
Momentan machst du nichts anderes, als dein Array zu sortieren (das sogar recht gut für nen anfänger)

Ansonsten machst du jedenfalls nichts...

Ich denke mal, dein Lösungsansatz ist es, den Umsatz zu sortieren und dann daraus den höchsten und niedrigsten zu ermitteln. An sich ganz ok, aber umständlich.

Suche dir einfach den höchsten Wert raus und speichere den Index dieses Wertes.
Also:
Durchlaufe das Array umsatz und vergleiche die Elemente miteinander.
Ist das erste Element größer als das zweite, speichere dessen Index.
Fahre fort mit Element 2 und 3. Ist element 2 größer element 3, dann speichere den Index von 2;
usw.
Dadurch findest du den höchsten Umsatz.
Gleiches machst du dann mit dem niedrigsten (vertausche dafür einfach größer mit kleiner)

Um die Ausgabe zu erzeugen, musst du nun nur noch den pächter mit dem gefunden index und den umsatz mit dem gefunden index ausgeben.

Die gegebenen beispiele sagen das gleiche aus^^

und um dir mal zu zeigen, wie dein Code vernünftig aussehen würde: (zum. halbwegs...)

Java:
public class Umsatz {
	
	public static void test()	{
		String[]shop = {"1","1","2","1","3","3","2","3","2","2","1"};
		String[]paechter = {"Frisch","Fromm","Fröhlich","Frei","Abend","Bauer","Dampf","Eimer","Gabel","Hummel","Impf"};
		String[]umsatz = {"1200","1300","2000","1400","1450","1350","1800","1200","1200","1000","1100"};
		printall (shop, paechter, umsatz);
	}
 
	public static void sortiere(int[] x) {      
		for (int i=0; i < x.length-1; i++) {
			for (int j=0; j < x.length-1; j++) {
				if (x[j] > x[j+1]) {                      
					int data   = x[j];       //  temp mit x[j] tauschen
					x[j]       = x[j+1];     //  x[j] mit x[j+1] tauschen
					x[j+1]     = data;       //  x[j+1] mit data tauschen
				}
			}
		}
     }          
 
	public static void main() 
	{
		int[] Array1 = {1,1,2,1,3,3,2,2,3,2,2,1};                                // Array mit Zahlen befüllen
		//int[] Array2 = {1200,1300,2000,1400,1450,1350,1800,1200,1200,1000,1100}; // Array mit Zahlen befüllen
		sortiere(Array1);
		//sortiere(Array2);
		for (int j=0; j<Array1.length; j++) {        // sortierte Zahlen zum String hinzufügen
			//for (int i=0; i<Array2.length; i++)        // sortierte Zahlen zum String hinzufügen
			System.out.print(Array1[j]+" ");    // Liste ausgeben
			//System.out.print(Array2[i]+" ");    // Liste ausgeben
		}
	} 
   
	public static void printall(String[]shop, String[]name, String[]umsatz)
	{
		System.out.println("Umsatzliste:");
		for(int i = 0; i < name.length; i++) {
			System.out.println (shop[i]+ " " +name[i] + " " +umsatz[i]);
		}
		
	}
}
 

Huelser

Mitglied
Ich denke mal, dein Lösungsansatz ist es, den Umsatz zu sortieren und dann daraus den höchsten und niedrigsten zu ermitteln. An sich ganz ok, aber umständlich.

Suche dir einfach den höchsten Wert raus und speichere den Index dieses Wertes.
Also:
Durchlaufe das Array umsatz und vergleiche die Elemente miteinander.
Ist das erste Element größer als das zweite, speichere dessen Index.
Fahre fort mit Element 2 und 3. Ist element 2 größer element 3, dann speichere den Index von 2;
usw.
Dadurch findest du den höchsten Umsatz.
Gleiches machst du dann mit dem niedrigsten (vertausche dafür einfach größer mit kleiner)

Um die Ausgabe zu erzeugen, musst du nun nur noch den pächter mit dem gefunden index und den umsatz mit dem gefunden index ausgeben.

Die gegebenen beispiele sagen das gleiche aus^^

und um dir mal zu zeigen, wie dein Code vernünftig aussehen würde: (zum. halbwegs...)

OK!? Klingt ja ganz interessant nur kann ich mir darunter nicht viel vorstellen!
 
U

Unregistriert

Gast
dann sind die shopnummern nicht sonderlich gut gewählt, da sie sich dauernd wiederholen
 
U

Unregistriert

Gast
[Java]
public static int max (int[] array) {
int index = 0;
for (int i = 0; i < array.length; i++) {
if (array[index] < array) {
index = i;
}
}
return index;
}

public static int min (int[] array) {
int index = 0;
for (int i = 0; i < array.length-1; i++) {
if (array[index] > array[i+1]) {
index = i;
}
}
return index;
}

[/Java]

Damit bestimmst du den index vom größten, bzw. kleinsten element eines arrays und kannst darüber dann die Pächter mit ihrem Umsatz und ihrem Shop auswählen
 

Michael...

Top Contributor
Also ist "1" ein anderer Shop als "1", oder anders ausgedrückt: ist halt eine Tankstelle aber eine anderere. Also repräsentiert der der Inhalt in shop[] die Art des Geschäfts!?!
Geht nichts über selbsterklärende Bezeichner;-)
 

Landei

Top Contributor
Hmm, wie wäre es, die Daten in einem zweidimensionalen Array zu halten? Das innere Array wäre dann eine Art "Ersatz-Objekt":

Java:
String[][] records {
  {"1","Frisch","1200"}, 
  {"1","Fromm","1300"},
  .... 
};
 

Huelser

Mitglied
SHOP PAECHTER UMSATZ
1 Frank Frisch 1200
1 Frauke Fromm 1300:
2 Frodo Fröhlich 2000
1 Fritz Frei 1400
3 Anke Abend 1450
3 Berta Bauer 1350
2 Daniel Dampf 1800
3 Emil Eimer 1200
2 Gabi Gabel 1200
2 Heiko Hummel 1000
1 Ingrid Impf 1100


Das ist die Ausgangstabelle
 

Huelser

Mitglied
Hmm, wie wäre es, die Daten in einem zweidimensionalen Array zu halten? Das innere Array wäre dann eine Art "Ersatz-Objekt":

Java:
String[][] records {
  {"1","Frisch","1200"}, 
  {"1","Fromm","1300"},
  .... 
};

Das hatte ich auch schon bei google gefunden nur kam ich dann auch net mehr damit weiter!
 

Michael...

Top Contributor
Das hatte ich auch schon bei google gefunden nur kam ich dann auch net mehr damit weiter!

Du hast damit ein Object-Array, das mehrer String-Arrays enthält. Diese String-Arrays könntest Du jetzt mit einer Schleife durchlaufen und Dir das mit dem höchsten/niedrigsten Umsatz raussuchen (Problem: Umsatz ist als String gespeichert --> muss nach int geparst werden) und dann diesen Eintrag ausgeben.
 

Landei

Top Contributor
Wieso nicht? Daten, die "zusammengehören", sind damit zusammengefasst. Dein Sortier-Algorithmus arbeitet nach einer kleinen Anpassung eben mit String[] statt mit String. records[5] gibt dir die sechste Zeile der Tabelle aus (Rückgabetyp ist String[]). records[5][0] gibt dir shopNummer, records[5][1] den Namen, records[5][2] den Umsatz dieser Zeile (jeweils als String) zurück.
 

Sonecc

Gesperrter Benutzer
Das hier wäre ein Lösungsansatz...
Die Ausgabe muss natürlich entsprechend angepasst werden.

Edit meint ich sollte erwähnen, dass ich die min und max methode aus diesem thread entliehen habe, es sei mir verziehen^^

Java:
public class Umsatz
{
		static String[] shop = {"1","1","2","1","3","3","2","3","2","2","1"};
		static String[] paechter = {"Frisch","Fromm","Fröhlich","Frei","Abend","Bauer","Dampf","Eimer","Gabel","Hummel","Impf"};
		static String[] umsatz = {"1200","1300","2000","1400","1450","1350","1800","1200","1200","1000","1100"};
 
	public static int max (int[] array) {
		int index = 0;
		for (int i = 0; i < array.length; i++) {
			if (array[index] < array[i]) {
				index = i;
			}
		}
		return index;
	}
	
	public static int min (int[] array) {
		int index = 0;
		for (int i = 0; i < array.length-1; i++) {
			if (array[index] > array[i+1]) {
				index = i;
			}
		}
		return index;
	}
	
	public static void main() 
	{
		int[] iUmsatz = toIntArray(umsatz); //Integer Array von umsatz
		int maxIndex = max(iUmsatz);
		int minIndex = min(iUmsatz);
		System.out.println("Der Pächter mit dem höchsten Umsatz ist: " + paechter[maxIndex] + " bei " + umsatz[maxIndex] + " Umsatz");
		System.out.println("Der Pächter mit dem höchsten Umsatz ist: " + paechter[minIndex] + " bei " + umsatz[minIndex] + " Umsatz");
	} 
   
	public static int[] toIntArray(String[] array) {
		int[] ret = new int[array.length];
		for(int i = 0; i < array.length; i++) {
			ret[i] = Integer.parseInt(array[i]);
		}
		return ret;
	}
}
 

Sonecc

Gesperrter Benutzer
Richtig, ich hab dir die aufgabe schon gelöst,was da nun genau passiert, kannst du dir selbst raussuchen...

Ist kein Kunststück.
Nimm dir etwas Papier (ja, auch das braucht man manchmal beim programmieren) und schreib dir die einzelnen schritte auf, dann wirst du erkennen was passiert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben