Bestimmte Ziffer

babuschka

Top Contributor
Hallo, ich habe eine kurze Frage, die ich trotz Recherche nicht selbst klären konnte:


Gibt es eine Methode, die einem die n-te Ziffer einer Integer-Zahl liefert?

Also ich übergebe zum Beispiel 123 (Integer) und will die erste Ziffer (1) haben.


Gibt's sowas?
 

Marco13

Top Contributor
Zusammenhang?
int value = 123;
int digit0 = (value / 100) % 10; // 1
int digit1 = (value / 10) % 10; // 2
int digit2 = (value / 1) % 10; // 3

Ggf. tut's bei dir auch irgendwas mit Strings...
 

Andi_CH

Top Contributor
Die plumpe Version:

Java:
		int wert = 123;
		String str = Integer.toString(wert);
		System.out.println(str.charAt(0));

Geht natürlich auch als Einzeiler ...

EDIT - och resultat als int:

Java:
int stelle = Integer.parseInt(""+str.charAt(0));
 

babuschka

Top Contributor
Also es dreht sich um Folgendes:

Ich möchte eine Methode printDigits(int n) implementieren: Diese soll die einzelnen Ziffern einer gegebenen Zahl n als Text ausgeben (Vorzeichen sollen ignoriert werden):

Beispiel: Aufruf von printDigits(2012) soll ausgeben: Zwei Null Eins Zwei

Da wir gerade das Thema "rekursive Methoden" haben, wollte ich das gerne rekursiv implementieren.

Dazu habe ich mir sowas überlegt:

Java:
public printDigits(int n){

//Behandlung der Trivialfälle

switch( n )
{
 case 0: System.out.println("Null"); break;

 case (1 || -1): System.out.println("Eins"); break;

 case (2 || -2): System.out.println("Zwei"); break;

 case (3 || -3): System.out.println("Drei"); break;

 case (4 || -4): System.out.println("Vier"); break;

 case (5 || -5): System.out.println("Fuenf"); break;

 case (6 || -6): System.out.println("Sechs"); break;

 case (7 || -7): System.out.println("Sieben"); break;
 
 case (8 || -8): System.out.println("Acht"); break;

 case (9 || -9): System.out.println("Neun"); break;
}

// Nicht-triviale Fälle (eigentliche Rekursion)

System.out.println( printDigits( erste Ziffer von n) + printDigits (n ohne die erste Ziffer) );

}


Zeile 30 kann ich bis jetzt nur verbal beschreiben, denn ich weiß nicht, wie ich auf die erste Ziffer der Zahl n zugreifen kann, diese dann abtrennen kann und die übriggebliebenen Ziffern bekomme.


Meine Frage ist also aus Zeile 30 heraus entstanden.
 

Marco13

Top Contributor
Java:
int stelle = Integer.parseInt(""+str.charAt(0));

Könnte man so machen.

Hach, wenn Java nur nicht so langsam wäre :( :joke:

Zur Rekursion: Mit
int zahl = 123;
int letzteZiffer = zahl % 10;
bekommt man immer die letzte Ziffer. Vielleicht kannst du darauf aufbauend die Rekursion basteln (es ist vermeintlich einfacher, die Ziffern rückwärts auszugeben, aber das ist nur abhängig von der Reihenfolge zweier Zeilen)
 

babuschka

Top Contributor
Okay, dann würde ich erstmal die Version machen, die die Ziffern in umgekehrter Reihenfolge als Text ausgibt:

printDigitsReversed(2012) soll also ausgeben: Zwei Eins Null Zwei


Dann habe ich in Zeile 30 stehen:

System.out.println( printDigitsReversed( n % 10 ) + " " + printDigitsReversed( n ohne letzte Ziffer) );


Wie kriege ich n ohne die letzte Ziffer?

(Habe das noch nicht so verstanden.)
 

Andi_CH

Top Contributor
[STRIKE]Wie wärs mit abzählen und durch 10 dividieren???[/STRIKE] zu spät ;-)

Egal ich bleib bei String

Java:
package com.javaforum;

public class Test {

	public static void translateDigit(char digit) {
		switch (digit) {
		case '0':
			System.out.print("null ");
			break;
		case '1':
			System.out.print("eins ");
			break;
		case '2':
			System.out.print("zwei ");
			break;
		case '3':
			System.out.print("drei ");
			break;
		case '4':
			System.out.print("vier ");
			break;
		case '5':
			System.out.print("fuenf ");
			break;
		case '6':
			System.out.print("sechs ");
			break;
		case '7':
			System.out.print("sieben ");
			break;
		case '8':
			System.out.print("acht ");
			break;
		case '9':
			System.out.print("neun ");
			break;
		}
	}

	public static void printFirstDigit(String number) {
		translateDigit(number.charAt(0));
		if (number.length()>1) {
			printFirstDigit(number.substring(1));
		}
	}
	public static void main(String[] args) {
		int i = 123;
		printFirstDigit(Integer.toString(i));
	}
}
 

Andi_CH

Top Contributor
translate kann natürlich beliebig erweiter werden ...

Java:
		case '-':
			System.out.print("minus ");
			break;
		case '.':
		case ',':
			System.out.print("komma ");
			break;
		case '^':
			System.out.print("hoch ");
			break;
 

babuschka

Top Contributor
Irgendwie bekomme ich es nicht richtig aufgeschrieben:

Java:
public class Digits{


public void printDigitsReversed(int n){

//Behandlung der Trivialfälle

switch( n )
{
 case 0: System.out.println("Null "); break;

 case 1: System.out.println("Eins "); break; 
 

 case 2: System.out.print("Zwei "); break;

 case 3: System.out.print("Drei "); break;

 case 4: System.out.print("Vier "); break;

 case 5: System.out.print("Fuenf "); break;

 case 6: System.out.print("Sechs "); break;

 case 7: System.out.print("Sieben "); break;
 
 case 8: System.out.print("Acht "); break;;

 case 9: System.out.print("Neun "); break;
}

System.out.println( printDigitsReversed( n % 10 ) + printDigitsReversed( n/10 ) );


}

}

Aber erstens fehlt noch, daß das Vorzeichen egal ist und zweitens kommen diese Fehlermeldungen (s. Screenshot).
 

Andi_CH

Top Contributor
Ist ja logisch!
Du ewartest dass printDigitsReversed etwas zurück gibt, das man mit + verknüfen und dann an sysout übergenben.

Bei printDigitsReversed steht aber void!

statt
Java:
System.out.println( printDigitsReversed( n % 10 ) + printDigitsReversed( n/10 ) );
Machst du einfach

Java:
printDigitsReversed( n % 10 );
printDigitsReversed( n/10 );

und es wird gehen

So nebenbei, hat das schon mal jemand in der vollen Komplexität gelöst?

12243 = Zwölftausenddreihundertzweiunddvierzig ?
What's about 1200 = Zwölfhundert (die einen sprechen das so aus)
 
Zuletzt bearbeitet:

babuschka

Top Contributor
Ich habe es jetzt so implementiert:

Java:
public class Digits{


public String printDigitsReversed(int n){

int m = Math.abs(n);	
	
//Behandlung der Trivialfälle

switch( m )
{
 case 0: return "Null ";

 case 1: return "Eins "; 
 

 case 2: return "Zwei ";
 case 3: return "Drei "; 

 case 4: return "Vier "; 

 case 5: return "Fuenf "; 

 case 6: return "Sechs "; 

 case 7: return "Sieben "; 
 
 case 8: return "Acht "; 

 case 9: return "Neun "; 
}

String s=new String();

s+= printDigitsReversed( m % 10) + printDigitsReversed( m/10 );



return s;

}

}


Nur, die Methode soll ja etwas ausgeben...

Jetzt macht sie das noch nicht.
 
S

SlaterB

Gast
schreibe nie [c]new String()[/c], null oder "" dürften reichen


wenn du was ausgeben willst dann System.out.prinln, oder? hattest du ja schonmal,
String zurückgeben und den Aufrufer etwas ausgeben zu lassen kann aber schlauer sein
 

insane80

Aktives Mitglied
Die Methode gibt Dir einen String zurück, den kannst Du dann ja z. B. mit
Code:
System.out.println(printDigitsReversed(5))
ausgeben
 

babuschka

Top Contributor
Aber wo baue ich das System.out.println ein?

In die Methode gar nicht sondern dann mal irgendwann anders, wenn ich die Methode aufrufe?

Oder muss ich einmal das bei jedem case machen und auch am Ende nochmal?
 

babuschka

Top Contributor
Wie meinst Du das mit der main-Methode?


Also irgendwie stehe ich wohl mal wieder auf dem Schlauch.

Wenn ich printDigitsReversed(2009) aufrufe, so wird ja bei mir der String zurückgegeben,

in der Aufgabe steht aber, daß der Aufruf printDigitsReversed(2009) zur Ausgabe

Neun Null Null Zwei


führen soll.


Missverstehe ich da was? Aber das macht die Methode doch jetzt nicht.
 

insane80

Aktives Mitglied
Na ja, Dein Programm wirst Du ja in der main-Methode starten.

Also z.B.:

Java:
public static void main(String[] args) {
        Digits d = new Digits();
        System.out.println(d.printDigitsReversed(2009));
}

Ausgabe:
Code:
Neun Null Null Zwei
 

babuschka

Top Contributor
Ja, das verstehe ich.

Aber genau genommen, ist doch dann die Formulierung der Aufgabe nicht korrekt. :oops:

Denn die Methode hat ja nicht zur Folge, daß diese Ausgabe passiert, sondern gibt den String zurück.
 

babuschka

Top Contributor
Um ehrlich zu sein, sehe ich immer noch nicht, wie ich die Zahl jetzt in der richtigen Reihenfolge in Text umwandeln kann.

In der Azufgabe heißt es:

"Beide Funktionen sind nahezu identisch. Beschreibe den Unterschied und seine Wirkung."
 

insane80

Aktives Mitglied
Ist das wirklich so ein Problem, dass ein String zurückgegeben wird und der nicht direkt in der Methode ausgegeben wird?
Der Vorteil ist, dass Du den String woanders verwenden kannst, z.B. auch in einer GUI ;-)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
So nebenbei, hat das schon mal jemand in der vollen Komplexität gelöst?

12243 = Zwölftausenddreihundertzweiunddvierzig ?
What's about 1200 = Zwölfhundert (die einen sprechen das so aus)

Da war kürzlich ein Thread dazu, es gibt wohl irgendeine Apache(???) Lib die das kann, auch konfigurierbar für deutsch und englisch und so... ansonsten macht das aus http://www.java-forum.org/java-basics-anfaenger-themen/101353-int-string-umwandeln.html#post645321 halt aus einer Zahl wie 9223372036854775807 einen String wie "neun Trillionen zweihundertdreiundzwanzig Milliarden dreihundertzweiundsiebzig Billionen sechsunddreißig Milliarden achthundertvierundfünfzig Millionen siebenhundertfünfundsiebzigtausend achthundertsieben"
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
B Denkanstoß benötigt: Emails an bestimmte Emailadresse schicken Java Basics - Anfänger-Themen 6
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
L String auf bestimmte zeichen untersuchen Java Basics - Anfänger-Themen 9
L Bestimmte Werte eines Arrays ausgeben. Java Basics - Anfänger-Themen 3
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
Henri Bestimmte Werte eine XML-Datei ausgeben. Java Basics - Anfänger-Themen 8
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
B Best Practice Bestimmte Zahl auslesen und in Variable speichern Java Basics - Anfänger-Themen 3
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
I Int Array, Zahl an bestimmte position setzten Java Basics - Anfänger-Themen 2
C [Bukkit Plugin] Blöcke eine bestimmte route entlang fliegen Java Basics - Anfänger-Themen 3
A Button in eine bestimmte Spalte platzieren Java Basics - Anfänger-Themen 4
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
M Bestimmte Zeichen auslesen Java Basics - Anfänger-Themen 2
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
W bestimmte Objekte in ArrayList auslesen Java Basics - Anfänger-Themen 8
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
J Bestimmte Anzahl Zeichen aneinander fügen Java Basics - Anfänger-Themen 9
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Nur bestimmte Klasse ausführen Java Basics - Anfänger-Themen 6
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D BufferedInputStream nur bestimmte Zeichen Java Basics - Anfänger-Themen 11
D Input/Output bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
R Bestimmte Stellen eines BigInteger Java Basics - Anfänger-Themen 7
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
S Bestimmte Methode von unbestimmter Datei Java Basics - Anfänger-Themen 6
V Bestimmte Stellen aus .txt Datei auslesen Java Basics - Anfänger-Themen 11
B bestimmte klammern im string ersetzten Java Basics - Anfänger-Themen 17
Binary.Coder JTable bzw. Tabelle in bestimmte Form überführen Java Basics - Anfänger-Themen 5
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
X im Verzeichnissbaum recursiv nur bestimmte Dateien finden Java Basics - Anfänger-Themen 7
M Aus String bestimmte Inhalte auslesen Java Basics - Anfänger-Themen 8
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
2 Bestimmte Anzahl von Bytes lesen und als string ausgeben? Java Basics - Anfänger-Themen 3
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
StrikeTom Bestimmte stelle in string herausfiltern Java Basics - Anfänger-Themen 7
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
E Bild eine bestimmte Anzahl blinken lassen Java Basics - Anfänger-Themen 3
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
Luk10 Zufallszahl "ohne" eine bestimmte Zahl(en) Java Basics - Anfänger-Themen 8
S OOP Wie bei Spiel "17+4" eine Karte an bestimmte Position hinzufügen Java Basics - Anfänger-Themen 13
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
S Bestimmte Elemente einer ArrayList löschen Java Basics - Anfänger-Themen 3
S Double bis bestimmte Nachkommzahl vergleichen (ohne zusätzliche Libs) Java Basics - Anfänger-Themen 12
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
N Text an bestimmte Stelle eines Dokuments schreiben Java Basics - Anfänger-Themen 6
G Bestimmte Zeile aus CSV ausgeben Java Basics - Anfänger-Themen 14
Assassin Nur bestimmte Daten aus txt auslesen... Java Basics - Anfänger-Themen 12
Developer_X Durch int Bestimmte Zeile überschreiben Java Basics - Anfänger-Themen 16
Developer_X Bestimmte Zeile aus TextDocument lesen Java Basics - Anfänger-Themen 2
V Nur bestimmte Werte zulassen Java Basics - Anfänger-Themen 2
M Bestimmte zeile aus .txt einlesen Java Basics - Anfänger-Themen 6
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
G Bestimmte Ebene eines Baumes rekursiv ausgeben Java Basics - Anfänger-Themen 49
I bestimmte Zahlen markieren.helppp. Java Basics - Anfänger-Themen 17
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
H bestimmte objekte in ArrayList löschen? Java Basics - Anfänger-Themen 7
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
M bestimmte Zeichen in String eliminieren Java Basics - Anfänger-Themen 2
T Bestimmte Zeile aus einer .txt-Datei auslesen? Java Basics - Anfänger-Themen 10
S Bestimmte Anzahl an nummern auslesen Java Basics - Anfänger-Themen 4
K bestimmte Dateien aus Ordner verschieben Java Basics - Anfänger-Themen 5
F Bestimmte Werte nicht beachten Java Basics - Anfänger-Themen 10
G bestimmte Stelle aus Textdatei auslesen. Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben