Java Arrays

hallo

ich hätte eine bitte an euch. ich habe vor kurzem angefangen, mich für java zu interessieren und mir einige beispiele überlegt. leider komme ich bei ein paar davon nicht weiter. ich möchte zum beispiel hier ein programm haben, wo max. 50 zahlen eingelesen werden (abbruch mit eingabe von 0), zuvor soll noch ein wert x eingegeben werden, der dann sozusagen die zahlen auf 2 felder teilt. wenn die eingegebene zahl größer ist als x, dann kommt sie in das feld fg und ansonsten in fk. es soll dann ausgegeben werden, welche zahlen sich im array fg befinden und welche in fk. ich habe schon damit begonnen, jedoch komme ich leider nicht weiter. bitte um hilfe und um die „einfachste“ variante, damit auch ich als anfänger sie verstehe.

lg manu1588

import java.util.Scanner;
public class Felder {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int zahl[]=new int [50];
int i;
int j = 0;
int x;
int fg[] = new int [50];
int fk[] = new int [50];

for (i=1;i x) {
zahl[j] = fg[j];
} else
zahl[j] = fk[j];
}

}

}

Moin,

habe Dir mal ein Beispiel zusammengeschustert: http://www.pastie.org/293656

Kommentare beziehen sich nur auf das, was nicht ohne Weiteres verständlich sein könnte.
Wenn Fragen sind, einfch nachfragen.

Gruß,
Puni

hallo

habe mal an meinem weitergebastelt und bin jetzt fast fertig. ich möchte folgendes noch haben: man gibt zuerst das x ein (funktioniert), dann gibt man der reihe nach die zahlen ein und diese werden in einem array f[i] gespeichert, jedoch soll die eingabe gestoppt werden, wenn die zahl 0 eingegeben wird (funktioniert noch nicht), danach soll das feld f[i] auf die felder fg[i] (kleiner als x) und fk[i] (größer gleich x) aufgeteilt werden, dies funktioniert auch schon zum großteil, jedoch gibt er mir da auch noch immer nullen aus, diese sollen nicht ausgegeben werden, ansonsten passts.

lg manu1588

[code]
import java.util.Scanner;
public class Felder {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int i = 1;
int j = 0;
int x;
int fg[] = new int [50];
int fk[] = new int [50];
int f[] = new int [5];

System.out.println(„Bitte geben Sie x ein!“);
x=s.nextInt();

f[i]=1;

for (i=0;i[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin,

bezüglich der Ausgabe kannst Du einfach eine if-Abfrage mit einbauen,
um zu prüfen, ob der Feldinhalt 0 ist:

for (int i = 0; i

Gruß,
Puni

1 Like

Hallo Manuel,

mit Deinen Arrays und deren Indices geht es etwas durcheinander.
Die Schleifen gehen immer von 0 bis f.length und greifen dann auf Elemente in den Arrays fg und fk zu. Das geht nicht immer gut und einige Elemente in den Arrays fg und fk sind undefiniert!

Hier ist mal ein Beispiel, was bei Eingabe von x=5 und den Zahlen 3 bis 7 passiert (? steht für undefinierte Werte):

Eingabe: 5 3 4 5 6 7
x: 5
f[i]: [0]:3 [1]:4 [2]:5 [3]:6 [4]:7
fk[i]: [0]:? [1]:? [2]:5 [3]:6 [4]:7 [5]-[49]:?
fg[i]: [0]:3 [1]:4 [2]:? [3]:? [4]:? [5]-[49]:?

Wenn die Java-Maschine den Speicher vorher mit 0 initialisiert (, wozu sie nicht verpflichtet ist), dann wird das Ergebnis folgendes
sein:

Die 1.te Zahl ist: 3
Die 2.te Zahl ist: 4
Die 3.te Zahl ist: 5
Die 4.te Zahl ist: 6
Die 5.te Zahl ist: 7

In fg befinden sich die Zahlen: 3
In fg befinden sich die Zahlen: 4
In fg befinden sich die Zahlen: 0
In fg befinden sich die Zahlen: 0
In fg befinden sich die Zahlen: 0

In fk befinden sich die Zahlen: 0
In fk befinden sich die Zahlen: 0
In fk befinden sich die Zahlen: 5
In fk befinden sich die Zahlen: 6
In fk befinden sich die Zahlen: 7

Ich würde folgenden Code vorschlagen: die Verarbeitung wird gleich in der Einleseschleife durchgeführt; die Anzahl der in den Arrays abgelegten Zahlen wird gemerkt; fg = x ist größer; fk = x ist kleiner oder gleich:

> public static void main(String[] args)  
> {  
> // TODO Auto-generated method stub  
> Scanner s = new Scanner(System.in);  
> int x;  
> int v = 1;  
> int nf = 0;  
> int f[] = new int [50];  
> int nfg = 0;  
> int fg[] = new int [50];  
> int nfk = 0;  
> int fk[] = new int [50];  
>   
> System.out.println("Bitte geben Sie x ein!");  
> x = s.nextInt();  
>   
> for (int i = 0; i 0)  
> {  
> f[i] = v;  
> nf++;  
>   
> if (x \> v)  
> {  
> fg[nfg] = v;  
> nfg++;  
> }  
> else  
> {  
> fk[nfk] = v;  
> nfk++;  
> }  
> }  
>   
> }  
>   
> for (int i = 0; i


Gruß,
Johannes

dankeschön funktioniert bestens, jedoch fehlt mir jetzt noch, dass er bei der eingabe, wenn 0 eingegeben wird abbricht, also nicht 50 zahlen ausgibt sondern eben nur die, die bis zur zahl 0 eingegeben wurden.

lg manu1588

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]