Aus int-Zahl bestimmte Stelle rausgreifen

Hi Leutz,

habe ein kleines dummmes Problem. Ich habe eine siebenstellige int-Zahl und will, dass jeweils die erste Stelle, die zweite Stelle... einer eigenen Variablen zugeordent werden soll. Wie bekomme ich nun die jeweilige Ziffer der Stelle heraus?

Gruß,
Digi
 
Moin,
ist vielleicht von hinten durch die Brust ins Auge, aber ich würde den int in einen String umwandlen, dann einen Substring von einem Zeichen Länge des gewünschten Indexes auslesen und diesen dann wieder zurück in ein int wandeln.
 
Das habe ich auch schon versucht, aber irgendwie kamen irgendwelche dummen Fehlermeldungen. Wie bekomme ich denn einen int-Wert in einen String bzw. wieder zurück? Da muss ich doch Casten oder so?
 
RTFAPI ;)
(Read the fucking API)

Klasse Integer:
static int parseInt(String s)

Klasse String:
static String valueOf(int i)
String substring(int beginIndex, int endIndex)
 
*räusper*

Code:
public class Test08 {
	public static void main(String[] args) {
		int zahl = 1115111;
		int log = (int)Math.log10(zahl);
		for(int i = 0; i <= log; i++){
			System.out.println(getFigure(zahl, i,log));
		}
	}
	private static int getFigure(int zahl, int i,int log) {
		return (int) ((zahl / Math.pow(10.0, log - i))) % 10;
	}
}

Gruß Tom
 
Also mit dem langen Quelltext kann ich kaum was anfangen.
Naja, ich denke, dass ich eine eigene (leichtere) Methode dafür gefunden habe.
Nur hängt es noch an einem kleinen Fehler.
Code:
produkt = jahr1 * jahr2;
String s = String.valueOf(produkt);
String s1 = s.charAt(0);		// Hier kommt Fehlermeldung: incompatible types - found char but expected java.lang.String
String s2 = s.charAt(1);
.
.
.
int i1 = (int) s1;
int i2 = (int) s2;
.
.
.

Dachte mit ich müsste "java.lang.* bzw. java.lang.String" importieren, aber das hilft nicht. Eigentlich habe ich durch "valueOf" doch aus dem Integer einen String gemacht, oder?
Und kann mir jemand sagen, ob das mit "int i1 = (int) s1" funktionieren wird, da ich bis dahin noch nicht gekommen bin.
Thx,
Digi
 
digitalspecht hat gesagt.:
Also mit dem langen Quelltext kann ich kaum was anfangen.
Naja, ich denke, dass ich eine eigene (leichtere) Methode dafür gefunden habe.
Nur hängt es noch an einem kleinen Fehler.
Code:
produkt = jahr1 * jahr2;
String s = String.valueOf(produkt);
String s1 = s.charAt(0);		// Hier kommt Fehlermeldung: incompatible types - found char but expected java.lang.String
String s2 = s.charAt(1);
.
int i1 = (int) s1;
int i2 = (int) s2;
.

Dachte mit ich müsste "java.lang.* bzw. java.lang.String" importieren, aber das hilft nicht. Eigentlich habe ich durch "valueOf" doch aus dem Integer einen String gemacht, oder?
Und kann mir jemand sagen, ob das mit "int i1 = (int) s1" funktionieren wird, da ich bis dahin noch nicht gekommen bin.
Thx,
Digi

Ouch... was habe ich denn oben geschrieben? charAt(...)? Nein, sondern:

String substring(int beginIndex, int endIndex)

Also:
Code:
produkt = jahr1 * jahr2;
String s = String.valueOf(produkt);
String s1 = s.substring(0, 0);
String s2 = s.substring(1, 1);
.
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
.
 
Hallo!

Die andere Methode (mit dem Logarithmus) funktioniert auch und ist mit Sicherheit um ein vielfaches schneller als diese hier:

Code:
public class NumberExtractor {

	public static void main(String[] args) {
		int num = 4934567;
		String s = String.valueOf(num);
		char c0 = s.charAt(0);
		char c1 = s.charAt(1);
		
		int n0 = c0 - '0';
		int n1 = c1 - '0';
		
		System.out.println("Ziffer0: " + n0);
		System.out.println("Ziffer1: " + n1);
	}
}

Gruß Tom
 
Oder mit ganzzahliger Division

Code:
      1 import java.lang.String;
      2 
      3 class versuch{
      4 
      5         public static void main(String[] args){ 
      6 
      7                 long number=1234567;
      8                 long mod = (long)Math.pow(10, Long.toString(number).length() - 1);
      9                 while(mod != 0){
     10                       
     11                         System.out.println(number / mod);
     12                         number = number - mod * (number / mod);
     13                         mod = mod / 10;
     14                 }
     15         }
     16 }

Gruß

RedWing
 
Zurück