frage zu:Zahlen sortieren

Status
Nicht offen für weitere Antworten.

Muffelhs

Mitglied
Guten Abend,
ich bin gerade dabei ein projekt zu realisieren

und zwar soll ich versch. Zahlen eingeben könen die werden als arrays gespeichert.
Diese Zahlen sollen am ende dann sortiert werden.

bis jetzt abe ich auch eine vorstellung

Code:
public class sortieren
{
public static void main(String[] args)
{
int[] zahl = new int[6];
zahl[0] = 10;
zahl[1] = 5;
zahl[2] = 2;
zahl[3] = 20;
zahl[4] = 15;
zahl[5]     = 122;
Arrays.sort(zahl, 0, 5);

for (int i = 0; i <= 5; i++)
{
System.out.println(zahl[i]);
}
}
}

jedoch gebe ich hier die zahlen schon im code ein ich würde dies gerne per eingabe machen , wie ist dies zu realisieren ?

MfG

Muffel
 
1) Klassennamen schrebt man Groß
2) schon mal was vom Einrücken des Quellcodes gehört?
3) "ich schreib hier grad irgendeinen shice" <-> "bin gerade dabei ein Projekt zu realisieren" lol, was für abgehobene Ausdrucksweise 😉 naja, soll mir recht sein 😀

Also, um irgendwas von der Konsole einzulesen, brauchst du so einen reader:
Code:
import java.io.*;
class class class blah blah{
  public static void main(String[] args){
    //reader erstellen
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)));
    ...
    //zuerst die größe des Arrays, dann in einer schleife die einzelnen Zahlen einlesen, jeweils so:
    int xyz=Integer.parseInt(reader.readLine());
    ...
  }
}
mit readLine() bekommst du die zeichenkette, die der benutzer eingibt und mit Enter bestätigt, mit Integer.parse int wandelst du das in eine ganze zahl um. Da können unter umständen ein paar exceptions fliegen, wenn etwas blödsinniges eingegeben wird, etwa NumberFormatException. Da wär's nett, diese abzufangen und nochmal nach einer zahl zu fragen. :toll: Alternativ wird oft Scanner-Klasse verwendet, die ist dann noch ein bisschen praktischer, da sparst du dir zB. ~10 zeichen code beim einlesen eines int's...
 
man fängt klein an und ja es ist die realisierung eines projektes ...

wird das alles unter einer class geschrieben oder zusammen ?
kannst du mir helfen die beiden codes zu verbinden ?

MfG

Muffel
 
Code:
import java.io.*;
class Sort{
  public static void main(String[] args) throws IOException{
    //reader erstellen
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
    //nach größe des Arrays fragen
    System.out.println("wieviele zahlen:");
    int size=Integer.parseInt(reader.readLine());
    //array anlegen
    int[] a=new int[size];
    //array fuellen
    for(int i=0; i<size; i++){
      a[i]=Integer.parseInt(reader.readLine());
    }

    //weiter wie bisher: sortieren, ausgeben...
    Arrays.sort(a);
    for(int i=0; i<a.length; i++){
    	System.out.println(a[i]);
    }
  }
}
 
zuerst wurde mir angezeigt das hier eine klammer zu viel is
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)));

die klammer habe ich entfernt
jetzt zeigt mir die cmd dies an.
Code:
Sort.java:6: ';' expected
    BufferedReader reader=new BufferedReader(new InputStreamReader(


1 error

C:\Dokumente und Einstellungen\Muffel\Desktop>javac Sort.java
Sort.java:9: unreported exception java.io.IOException; must be caug
d to be thrown
    int size=Integer.parseInt(reader.readLine());
                                             ^
Sort.java:14: unreported exception java.io.IOException; must be cau
ed to be thrown
      a[i]=Integer.parseInt(reader.readLine());
                                           ^
2 errors
 
Wo bleiben die guten alten Java-Kurse, in denen alles von Anfang an erklärt wird? 🙂
 
..tjo, Du mußt noch ne Fehlerbehandlung einbauen.
Könnte z.B.: so aussehen:
Code:
import java.io.*;

class Sort {
	public static void main(String[] args) {
		// reader erstellen
		// evtl Fehler abfangen
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					System.in));
			// nach größe des Arrays fragen
			System.out.println("wieviele zahlen:");
			int size = Integer.parseInt(reader.readLine());
			// array anlegen
			int[] a = new int[size];
			// array fuellen
			for (int i = 0; i < size; i++) {
				a[i] = Integer.parseInt(reader.readLine());
			}
		} catch (IOException io) {
			// hier kommt der Code zur Fehlerbehandlung rein
		}
		// weiter wie bisher: sortieren, ausgeben...
	}
}
lg
DocRandom
 
jaaa, meine güte, hab halt ne klammer zu viel eingetippt, was solls^^ hab's jetzt im letzten post korrigiert...
 
oke , es klappt.
bei eclipse kommt auch die frage wieviele zahlen: ..
jedoch wenn ich per cmd das programm öffnen will erscheint einfach garnichts

...\Desktop> javac Sort.java

...\Desktop>

was mache ich jetzt falsch ?
 
nichts. jetzt hast du es kompiliert. super. jetzt hast du irgendwo die .class datei rumliegen, und musst diese nur noch mit
Code:
java MyClassName
aufrufen
 
vielen dank

ich hoffe das ist jetzt die letzte frage 😀
bei einem klappt das sehr gut
Code:
wieviele zahlen:
1
5
5

wenn ich 2 zahlen eingebe kommt das

Code:
wieviele zahlen:
2
12, 14
Exception in thread "main" java.lang.NumberFormatException: For input string: "12, 14"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Sort.main(sort.java:14)

woran kann das liegen ?
 
..nun für Dein Programm sind das keine 2 Zahlen, sondern nur eine.
Da Du ja mit
Code:
int size = Integer.parseInt(reader.readLine());
eine Eingabe mit der Enter-Taste abschließt.
Ergo liest das Programm jetzt 12, 14 ; was ja keinem Integer entspricht.
Du kannst das mit einer zusätzlichen catch Klausel abfangen

lg
DocRandom
 
man merkt studium hat wieder angefangen...

das zahlen einlesen, sortieren, durchnitt berechnen, summe berechnen und ausgeben beispiel wurde jetzt schon sicher von 2 Mio Studenten programmiert...
 
ARadauer hat gesagt.:
man merkt studium hat wieder angefangen...

das zahlen einlesen, sortieren, durchnitt berechnen, summe berechnen und ausgeben beispiel wurde jetzt schon sicher von 2 Mio Studenten programmiert...

..und das die Unis kein Geld mehr haben dürften, scheint auch immer klarer.
Sonst hätten die Studierenden die Unterlagen für die Grundlagen erhalten.

lg
DocRandom
 
Muffelhs hat gesagt.:
=/ wie binde ich das catch in meinen quelltext ein ?
so in etwa...
Code:
...
} catch (IOException io) {
   // hier kommt der Code zur Fehlerbehandlung rein
} catch (NumberFormatException nfe) {
   System.err.println("Bitte nur ganze Zahlen eingeben und mit Enter abschliessen");
   System.exit(1);
}
...

lg
DocRandom
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben