Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
14.09.11, 15:21
|
#1
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
[Hilfe] Zahlensortierer Java (Eclipse o.ä)
Hey ..
Ich suche ein Programm welches mir in einem Array (Index=0-99) 100 verschiedene Zahlen zwischen 1-100 ausgibt , mir sie dann in die richtige Reihenfolge sortiert (1-100) und dann noch den Maximalen und den Minimalen Wert ausgibt...
Ich krieg's einfach nicht gebacken und wäre euch sehr dankbar wenn ihr mal einen laufenden Quellcode posten könntet..
Lg,
Dijar
|
|
|
14.09.11, 15:35
|
#2
|
Anfänger
Registriert seit: Apr 2010
Beiträge: 20
Bedankt: 9
|
Diese Seite hat mir immer sehr geholfen.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
|
|
14.09.11, 15:38
|
#3
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
Wenns geht hätte ich trotzdem gerne einen konkreten Quellcode .. Einfach um daraus lernen zu können :P
|
|
|
14.09.11, 16:24
|
#4
|
Wodkabrenner
Registriert seit: Aug 2009
Beiträge: 496
Bedankt: 158
|
kein problem: zeig uns wie weit du bisher gekommen bist und wir schauen wo wir dir auf die sprünge helfen können - nur so lernst du etwas.
man könnte dir natürlich auch die lösung geben, aber wo bleibt da der lerneffekt. überdenk deine einstellung nochmal.
__________________
Core i7 4790k # Asrock Z97M Pro 4 # 8GB Crucial Ballistix # Vapor-X R9 290X Tri-X # Crucial & Samsung SSD only
|
|
|
14.09.11, 17:43
|
#5
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
Okay kein Problem
Die 100 zahlen,minimum und Maximum habe ich soweit .. Mir fehlt noch das sortieren sowie die richtige Setzung alle klammern .. Er sortiert sie mir zwar so halb , dennoch krieg ich jede zahl 5000 ausgegeben und jedes mal ein minimum und ein maximum..
Dennoch haben es viele mit mehreren Klassen zum laufen gekriegt :/ Ich hoffe aber das es auch so geht!
Hier soweit mein Quellcode (Basis hat ein Lehrer für uns geschrieben , ist für die 100rnd zahlen)
Code:
package Blub;
import basis.*;
import java.util.Arrays;
public class Zahlenproblem {
/**
* @param args
*/
public static void main(String[] args) {
int max = 0;
int min = 101;
int[] Zahlenfeld = new int[100];
for (int i=0;i<Zahlenfeld.length;i++){
Zahlenfeld[i]=(int) Hilfe.zufall(0,100);
System.out.println(Zahlenfeld[i]);
{
if (max<Zahlenfeld[i])
max=Zahlenfeld[i];
if (min>Zahlenfeld[i])
min=Zahlenfeld[i];
}
Arrays.sort(Zahlenfeld);
for(int s : Zahlenfeld)
System.out.println(i);
}
System.out.println("Maximum:" +max);
System.out.println("Minimum;" +min);
}
}
|
|
|
14.09.11, 18:01
|
#6
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Zitat:
Zitat von Pitsom
|
Schön dass sie dir geholfen hat, hat aber 0 mit dem Thema zu tun.
Es geht hier um Java und nicht Javas*****, und die haben fast gar nix gemeinsam außer das java im wort.
@ topic
Guck dir mal auf Wikipedia Bubblesort oder Quicksort an, die Algorithmen sind dort schon in Pseudocode, sollte also kein Problem sein, diese in Java umzusetzen
|
|
|
14.09.11, 18:07
|
#7
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
Keiner da der meinen Quellcode konkret verbessern kann oder selbst zufällig einen hat?
|
|
|
14.09.11, 18:45
|
#8
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
/push , ist wichtig hahah
|
|
|
14.09.11, 19:26
|
#9
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Was genau ist denn dein Fehler?
Was geht denn nicht?
Und was soll das hier sein?
Code:
for(int s : Zahlenfeld)
System.out.println(i);
|
|
|
14.09.11, 19:27
|
#10
|
Mitglied
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
|
a) dein code ist nen bissl komisch geschweift-geklammert.
b) da ich Hilfe.zufall() nicht habe, gibts eben zufall() als eigene funktion.
c) int[10] statt 100 nur der übersichtlichkeit halber.
richtig:
Code:
import java.util.Arrays;
public class Zahlenproblem {
private static int zufall(int min, int max) {
return min + (int) ((max+1-min) * Math.random());
}
/**
* @param args
*/
public static void main(String[] args) {
int max = -1;
int min = 101;
int[] Zahlenfeld = new int[10];
for (int i = 0; i < Zahlenfeld.length; i++) {
Zahlenfeld[i] = zufall (1,100); // (int) (100 * Math.random() + 1.0);
System.out.println("zahl " + i + " == " + Zahlenfeld[i]);
if (max < Zahlenfeld[i]) {
max = Zahlenfeld[i];
}
if (min > Zahlenfeld[i]) {
min = Zahlenfeld[i];
}
}
Arrays.sort(Zahlenfeld);
for (int s : Zahlenfeld) {
System.out.println(s);
}
System.out.println("Maximum:" + max);
System.out.println("Minimum;" + min);
}
}
edit:
ausserdem war
Code:
for(int s : Zahlenfeld)
System.out.println(i);
falsch. muss for (int i: ...) oder System.out.println(s); heissen. typischer copy-und-paste fehler.
__________________
entropie erfordert keine wartung
|
|
|
14.09.11, 19:28
|
#11
|
Mitglied
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
|
Zitat:
Zitat von Thelvan
Und was soll das hier sein?
Code:
for(int s : Zahlenfeld)
System.out.println(i);
|
das ist die java-version von foreach() aus anderen sprachen.
__________________
entropie erfordert keine wartung
|
|
|
14.09.11, 19:33
|
#12
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
Also mein bisheriges Problem war halt das er ungefähr 10000000 zahlen ausgegeben hat , 0-100 sortiert hat und immer zwischendurch rnd zahlen + max und minimum von mir nicht ersichtbaren zahlen ^^
Die geschweiften Klammern habe ich auch falsch gesetzt wenn ich das richtig sehe :S
|
|
|
14.09.11, 19:35
|
#13
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
@Urga
Ich danke dir vielmals.. problem scheint soweit gelöst zu sein (Y)
|
|
|
14.09.11, 19:38
|
#14
|
Anfänger
Registriert seit: Dec 2008
Beiträge: 19
Bedankt: 2
|
Ja , meine Fehler sind wohl schon recht blöd einfach ... Ich bin erst gerade dabei mich richtig mit Java und codieren zu befassen und deswegen :/
|
|
|
14.09.11, 19:38
|
#15
|
Ist öfter hier
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
|
Thelvans Tip mit Bubblesort ist doch ziemlich gut. Im Wiki-Artikel ist der Algorithmus im Pseudocode implementiert. Das musst Du nur noch in sauberen Java-Code übersetzen. Bei Bubblesort kommst Du mit while und if aus.
Und wenn Du Deinen Quelltext sauber einrückst (nach einer { einrücken, nach } ausrücken), dann erkennst Du vielleicht auch, in welche Schleifendurchläufen Du welche Daten ausgibst.
Und noch ein Tip:
Code:
for(int s : Zahlenfeld)
System.out.println(i);
ist ziemlich böse. Weil Du keine {}-Klammern hinter dem for verwendest, wird das System.out als Befehl in der Schleife ausgeführt und nur das System.out. Wenn Du später einen weiteren Befehl in der Schleife ausführen willst, garantiere ich Dir, dass Du ihn eingerückt unter das System.out schreiben wirst und dich anschließend wunderst, warum der Befehl nur einmal ausgeführt wird.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
|
|
|
14.09.11, 22:30
|
#16
|
Mitglied
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
|
tipp vom profi (mir):
nimm epeos hinweis ernst!
also immer {} nach for,while,if,else,try,catch, und was es da sonst noch gibt.
__________________
entropie erfordert keine wartung
|
|
|
15.09.11, 18:43
|
#17
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Und jede Curly Bracket in eine neue Zeile !
|
|
|
16.09.11, 17:45
|
#18
|
Anfänger
Registriert seit: Apr 2010
Beiträge: 6
Bedankt: 2
|
Zitat:
Zitat von Thelvan
Und jede Curly Bracket in eine neue Zeile !
|
Muss nicht sieht fürn Code aber eleganter aus.
Desweitern kann ich als Sortieralgorithmen auch StraightSelection oder StraightInsertion empfehlen. BubbleSort wird bei riesigen Arrays riesig Zeitfressend xD
|
|
|
17.09.11, 10:52
|
#19
|
Anfänger
Registriert seit: Nov 2008
Beiträge: 1
Bedankt: 199
|
Hallo Dijar,
also wenn ich deine Anforderung richtig verstanden habe willst du als erstes ein Array mit 100 Zahlen füllen. Anschließend diese aufsteigend sortieren und dir am schluss das Min und das Max deines Array ausgeben lasse. Ist das mal soweit richtg?
Mein Vorschlag wäre nun wie folgt.
- Leg dir als erstes einmal dein Array an (in deinem sample int[100])
- Füll dieses array jetzt mit zufälligen Werten (was ich gesehen habe über Hilf.zufall(0,100) )
- Wenn du mit dem Füllen fertig bist, kannst du anfangen zu sortieren. Hierbei ist zu beachten, wenn deine Menge von Zahlen nicht über 10.000 oder so was geht kannst du schon noch nmit einem Bubble sort arbeiten (ich würd es aber trotzdem nicht). Wenn dein Array dann doch größer wird solltest du auf Quicksort umsteigen [1]
- Der Min und Max Wert sind nach dem sortieren ja ganz einfach zu finden: Min = Array[0] und Max is Array[Array.Lenght() -1]
Verzichte wärend dem füllen und sortieren auf ausgaben da sie deinen Code langsam machen!
HTH
Nightmare
[1] [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
|
|
19.10.11, 21:40
|
#20
|
Anfänger
Registriert seit: Jun 2010
Beiträge: 45
Bedankt: 12
|
Ehm .. hast du nicht fast den selben Thread schon 4 Tage vorher eröffnet ?
Und sind die Codeabschnitte in dem Thread nicht das was du suchst ?
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.
().
|