ARRAY initialisieren

Status
Nicht offen für weitere Antworten.

newbie2009

Bekanntes Mitglied
Also ich möchte eine eingelesene 13-stellige Zahl in ihre Bestandteile zerlegen, und dann die einzelnen Ziffern in Array Feldern abspeichern.
Z.B 1234567890123
sollte mir dann z.B ausgeben:
Array[1]=2;

Mit meiner Prozedur klappt es soweit, aber nur wenn ich weniger als 10 Zahlen eingebe,wenn ich mehr eingebe und dann auf die Felder des Arrays zugreife, steht überall eine 0 ( Array[1]=0,Array[12]=0😉

:rtfm:
bin schon mittlerweile verzweifelt, hoffe jemand kann mir da weiter helfen vielen dank im voraus




Java:
public class jetzthabiches {

	public static double [] arraynrEins=new double[13];				//  array mit 13 Feldern
	public static int eingabewert=IO.readInt("geben sie eine zahl ein");		// variable für benutzereingabe
	public static int hilfsvariable=0;
	
	
	public static void main(String[] args) {

arrayBeschreiben();
IO.println(arraynrEins[3]);						// beliebige Zahl z.b 3
	}

	
	public static void arrayBeschreiben(){				//prozedur um mein arry zu initialisieren
		for(int m=0;m<13;m++){
		
		arraynrEins[m]= eingabewert%10;
		eingabewert=eingabewert/10;
		
		
		}
		
	
		}
	}
 
Also ich möchte eine eingelesene 13-stellige Zahl in ihre Bestandteile zerlegen, und dann die einzelnen Ziffern in Array Feldern abspeichern.
Z.B 1234567890123

in ein int passt doch maximal nur die zahl 2147483647 ???:L

zu deinen nullen. also imo müssten die auch da sein, wenn du weniger als 10 zeichen hast, denn
bei
Java:
public static double [] arraynrEins=new double[13];
werden schon ALLE mit 0.0 initialisiert. wenn du nun nur 7 zahlen hast, setzt du ja auch nur die ersten 7, der rest bleibt unverändert 0.0

daher weiss ich momentan nicht so genau was ich auf
Mit meiner Prozedur klappt es soweit, aber nur wenn ich weniger als 10 Zahlen eingebe,wenn ich mehr eingebe und dann auf die Felder des Arrays zugreife, steht überall eine 0 ( Array[1]=0,Array[12]=0
anworten soll 😀
 
[c]Zeile 4: int eingabewert[/c]
ein int geht nur bis etwas mehr als 2 Milliarden. Sind gerade 10 Zeichen 😉

Wenn du long verwendest, kannst du 19 Zahlen aufnehmen. Wenn du noch mehr Zeichen brauchst, musst du auf primitive Datentypen verzichten. Dann könntest du einen String oder BigInteger oder ähnliches verwenden.

Übrigens finde ich das nicht besonders geschickt, die Abfrage im statisch initialisierten Teil durchzuführen, wie du es in Zeile machst. Besser wäre es, wenn du dort nur erstmals die variable "eingabewert" initialisierst, aber erst im main mit IO.readInt einen Wert zuweist.

//EDIT: eRaaaa war schon wieder schneller 🙂
 
werden schon ALLE mit 0.0 initialisiert. wenn du nun nur 7 zahlen hast, setzt du ja auch nur die ersten 7, der rest bleibt unverändert 0.0
Das verstehe ich ja , nur das Problem ist, wenn ich alle Felder belege , also mehr als 9 Felder, werden bei mir alle mit 0 initialisiert.

Ja hatte ich mir auch schon überlegt, aber auch nach dem ändern funktioniert meine Prozedur nur für 9 ziffern,sobald ich eine 10te eingebe,werden alle Felder wieder mit 0 initialisiert,Hier der geänderte Quellcode
Java:
public class jetzthabiches {

	public static long [] arraynrEins=new long[13];				//  array mit 13 Feldern
	public static long eingabewert=IO.readLong("geben sie eine zahl ein");		// variable für benutzereingabe
	public static long hilfsvariable=0;
	
	
	public static void main(String[] args) {

arrayBeschreiben();
IO.println(arraynrEins[3]);						// beliebige Zahl z.b 3
	}

	
	public static void arrayBeschreiben(){				//prozedur um mein arry zu initialisieren
		for(int m=0;m<13;m++){
		
		arraynrEins[m]= eingabewert%10;
		eingabewert=eingabewert/10;
		
		
		}
		
	
		}
	}
 
Zuletzt bearbeitet:
also ich kenn deine IO klasse nicht.
aber eig. sollte es gehen. deine methode ist jedenfalls korrekt

Java:
public class jetzthabiches {
	public static long[] arraynrEins = new long[13]; // array mit 13 Feldern
	public static long hilfsvariable = 0;

	public static void main(String[] args) {
		long eingabewert = 1234567891234L;
		arrayBeschreiben(eingabewert);
		System.out.println(Arrays.toString(arraynrEins));
	}

	public static void arrayBeschreiben(long eingabewert) { // prozedur um mein arry zu
											// initialisieren
		for (int m = 0; m < 13; m++) {

			arraynrEins[m] = eingabewert % 10;
			eingabewert = eingabewert / 10;

		}
	}

also ich denke es liegt an der IO-klasse ?! (oder hab ich was übersehen ?? )
 
Vielen Dank es funktioniert jetzt!
Habe es nun folgend gelöst.Habe einfach für die Prozedur einen Parameter festgelegt.Nun macht er auch das was ich vor hatte🙂

Und nochmal vielen Dank an alle, ein echt empfehlenswertes Forum:rtfm:
Java:
	public static void arrayBeschreiben(long eingabewert ){				//prozedur um mein arry zu initialisieren
		for(int m=0;m<13;m++){
		
		arraynrEins[m]= eingabewert%10;
		eingabewert=eingabewert/10;
		
		
		}
		
	
		}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben