Variablen Ziffer für Ziffer einzeln speichern

JumpFrog

Mitglied
Hey Leute,

mir ist gerade eine Tolle Idee gekommen, bezüglich Android oder sollte ich besser sagen, für ein für mich Nützliches Programm für mein Android Phone. Bevor ich mich aber an der Programmierung für das Android versuche, wollte ich es erstmal am PC versuchen, da ist die Unerfahrungsrate, nicht ganz so hoch 🙂

Also ich möchte, das der User eine Ziffernfolge eingibt, und das Programm diese dann Ziffer für Ziffer in einer ArrayListe speichert. Doch weiß ich leider nicht, wie genau ich das anstellen soll. Leider weiß ich auch nicht unter was für Stichwörtern ich suchen könnte.

Hat einer von euch Tipps für mich? 🙂

LG JumpFrog
 
CharSequence/String haben Methoden wie charAt(index) was dir den Character an der Position index liefert. Weiter haben sie die Methode length() welches dir die Länge der Ziffernfolge liefert, also iterierst du von 0 bis < length() und addest den Character an charAt(index) zu deiner Liste !
 
Wenn es sich wirklich um eine Zahl handelt, dann kannst du mit
Code:
%10
und
Code:
/10
arbeiten.
 
So weit so gut, Syntaxfehler scheint es nicht zu geben, aber zu funktionieren scheint es auch nicht :lol:

Zunächst einmal der Quellcode:
Java:
	public static void main(String[] args) throws IOException {
		euklidisch eukli = new euklidisch();
		InputStreamReader einlesen = new InputStreamReader(System.in);
		BufferedReader übergabe = new BufferedReader(einlesen);
		// Abfrage der erste Zahl
		System.out.println("Geben Sie die erste Zahl ein:");
		uZahl1 = übergabe.readLine();
		int i = 0;	
		while (i <= uZahl1.length()) {
			if (!(übergabe.readLine().charAt(i) == 48 || übergabe.readLine().charAt(i) == 49 || übergabe.readLine().charAt(i) == 50 ||
					übergabe.readLine().charAt(i) == 51 || übergabe.readLine().charAt(i) == 52 || übergabe.readLine().charAt(i) == 53 
					|| übergabe.readLine().charAt(i) == 54 || übergabe.readLine().charAt(i) == 55 || übergabe.readLine().charAt(i) == 56
					|| übergabe.readLine().charAt(i) == 57))
			{
				System.out.println("Es dürfen nur ganze Zahlen eingegeben werden!");
			}
                i++;
		}
		zahl1 = Integer.parseInt(übergabe.readLine());
uZahl1 ist dabei vom Typ String und zahl vom Typ Integer. Meine Eingabe wird angenommen, allerdings geht es danach nicht weiter. Ich Programmiere im Moment mit Eclipse und hab noch kaum Debugging Erfahrung 🙁 also kann ich ihn auch nicht wirklich um Hilfe bitten. Habt ihr eine Idee?

Achja, das die Fehlermeldung vonwegen, dass nur ganze Zahlen eingegeben werden dürfen, nicht Perfekt ist, ist mir klar aber erstmal eine Ausgabe haben 🙂 und bitte nicht gleich an Code-Optimierung denken 🙂 so verstehe ich es und das ist doch recht viel wert im Moment für mich 🙂 die Code-Optimierung kommt, wenns alles Funktioniert 🙂

LG JumpFrog

PS: @XHelp: das sind vielleicht doch, ein paar zu wenige Informationen :toll:. Auch wenn ich es erstmal wie eRaaaa es geschrieben hat mache, würde es mich doch interessieren, was du damit meintest 🙂
 
Er meinte damit, wenn du eh nur Zahlen hast , also z.B. "12345", (was du ja anscheinend hast wenn ich mir die ASCII Codes angucke) kannst du es einfach zu einem großen Integer machen (insofern die Zahl nicht zu groß ist, scheint sie aber auch nicht, da du ja genau das im letzten Schritt machst) und dann eben mittels Mathematik an die einzelnen Ziffern gelangen.

Java:
		int big = Integer.parseInt("12345");
		while(big > 0){
			System.out.println(big % 10);
			big /= 10;
		}

Man könnte deine Abfrage auf wenige Zeilen reduzieren mit einem regulären Ausdruck z.B. :
Java:
		if(!"12345".matches("\\d+")){
			 System.out.println("Es dürfen nur ganze Zahlen eingegeben werden!");
		}else{
			System.out.println("Alles nur Zahlen! :)");
		}
(oder mit Matcher und Pattern .... oder ...)

p.s: mit übergabe.readLine() liest du übrigens jedes mal einen neuen String ein! ;D
 
Klingt interessant und zum Teil auch schon einleuchtend was du da schreibst 🙂 Trotzdem werde ich das erst beim nächsten Projekt (dem von mir im ersten Post) angesprochenen verwirklichen, da ja bei Handys schon eher auf die Ressourcen geachtet werden müsste 🙂

Als ich dein PS gelesen habe musste ich schmunzeln, das erklärt so einiges nun bekomme ich auch eine Fehlermeldung 🙂

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.charAt(Unknown Source)
at euklidisch.main(euklidisch.java:43)
bei Zeile 43 handelt es sich um den Beginn der If-Schleife. Und wenn ich das richtig verstehe, kommt er mit dem "i" nicht wirklich klar 🙂 Was aber Quatsch ist, weil er die Schleifen 4 mal durchläuft 🙂 Eine Fehlermeldung gibt es auch 🙂 aber er macht danach nicht weiter.

Hier mal der Quellcode wie es weitergehen soll:

Java:
// Abfrage der zweiten Zahl
		System.out.println("Geben Sie die zweite Zahl ein:");
		uZahl2 = übergabe.readLine();
		i = 0;
		while (i < uZahl2.length()) {
			if (!(uZahl2.charAt(i) == 48 || uZahl2.charAt(i) == 49 || uZahl2.charAt(i) == 50 ||
					uZahl2.charAt(i) == 51 || uZahl2.charAt(i) == 52 || uZahl2.charAt(i) == 53 
					|| uZahl2.charAt(i) == 54 || uZahl2.charAt(i) == 55 || uZahl2.charAt(i) == 56
					|| uZahl2.charAt(i) == 57))
			{
				System.out.println("Es dürfen nur ganze Zahlen eingegeben werden!");
			}
			i++;
		}
		zahl2 = Integer.parseInt(übergabe.readLine());
eukli.errechnen(zahl1,zahl2);

Und vor dem Kommentar hört er einfach auf. Sowas is doch eigentlich nicht Normal oder?

EDIT: Ok, er wartet an dieser stelle auf eine Eingabe, und ich glaube ich weiß auch wieso... :toll:

Ok, ich weiß wieso 😀 wegen dem "übergabe.readline()" einfach uZahl1 bzw. uZahl2 draus gemacht und es geht 🙂
 
Zuletzt bearbeitet:

Zurück
Oben