Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
int zahl = 123456;
int number;
number = zahl % 10; //number = 6;
zahl /=10; //zahl = 12345
package de.tutorials;
import java.util.Arrays;
public class IntToIntA {
/**
* @param args
*/
public static void main(String[] args) {
int value = Integer.MAX_VALUE;
//works only with positive numbers!
int[] a = new int[value == 0 ? 1 : (int)Math.log10(value)+1];
for(int i = 0; i < a.length ;i++){
a[i] = value / (int)Math.pow(10, a.length-i-1) % 10;
}
System.out.println(Arrays.toString(a));
}
}
int zahl = 123456;
int number;
number = zahl % 10; //number = 6;
zahl /=10; //zahl = 12345
Pattern p = Pattern.compile("[0-9]");
Matcher m = p.matcher("123456");
while(m.find()) {
//System.out.println(m.group());
}
Java:int zahl = 123456; int number; number = zahl % 10; //number = 6; zahl /=10; //zahl = 12345
Das Problem dabei ist, dass er von hinten anfängt.
Hier fängt er von vorne an, allerdings ist dies eine String-Bearbeitung, d.h. du müsstest deine Daten bzw. Ergebnisse vermutlich parsen.
Java:Pattern p = Pattern.compile("[0-9]"); Matcher m = p.matcher("123456"); while(m.find()) { //System.out.println(m.group()); }
Edit: Alternativ wäre es natürlich auch mit charAt(i) möglich, allerdings wird hier jedes Zeichen ausgewertet, auch wenn es keine Zahl ist.
public static void main(String[] args) {
int zahl = 12345;
String wort = new Integer(zahl).toString();
int[] zahlen = new int[wort.length()];
for (int i = 0; i < wort.length(); i++) {
zahlen[i] = Integer.parseInt(wort.substring(i, i+1));
}
System.out.println(Arrays.toString(zahlen)); //Ausgabe: [1, 2, 3, 4, 5]
}
import java.util.Arrays;
class Speed {
public static void main(String[] args) {
long time;
System.out.println(Arrays.toString(toIntArray_Mod(123456789)));
System.out.println(Arrays.toString(toIntArray_String_CharAt(123456789)));
System.out.println(Arrays.toString(toIntArray_String_Substring(123456789)));
//System.out.println(Arrays.toString(toIntArray_CharArray(123456789)));
time = System.currentTimeMillis();
for(int i = 1; i<10000000; i++) {
toIntArray_Mod(i);
}
System.out.printf("%dms%n", System.currentTimeMillis() - time);
time = System.currentTimeMillis();
for(int i = 1; i<10000000; i++) {
toIntArray_String_CharAt(i);
}
System.out.printf("%dms%n", System.currentTimeMillis() - time);
time = System.currentTimeMillis();
for(int i = 1; i<10000000; i++) {
toIntArray_String_Substring(i);
}
System.out.printf("%dms%n", System.currentTimeMillis() - time);
}
private static int[] toIntArray_Mod(int i) {
//find out how many digits the number has (would be easier with strings, but slower! check toIntArray_Mix for implementation)
int j = i, numDigits = 0;
while(j!=0) {
j/=10;
numDigits++;
}
int[] arr = new int[numDigits];
int k = arr.length - 1;
while(i!=0) {
arr[k] = i % 10;
i/=10;
k--;
}
return arr;
}
private static int[] toIntArray_String_CharAt(int i) {
String number = String.valueOf(i);
int length = number.length();
int[] arr = new int[length];
while(length > 0) {
length--;
arr[length] = number.charAt(length) - 48;
}
return arr;
}
private static int[] toIntArray_String_Substring(int i) {
String number = String.valueOf(i);
int[] arr = new int[number.length()];
for (int j = 0; j < number.length(); j++) {
arr[j] = Integer.parseInt(number.substring(j, j+1));
}
return arr;
}
}
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
929ms
987ms
3118ms
Die Lösung mit dem Regulären Ausdruck konnte ich nicht implementieren, da ich nicht weiß, wie ich vor dem durchlaufen an die Anzahl der Treffer kommen soll (um das Array zu initialisieren).
private static int[] toIntArray(int value) {
int numberOfDigits = 1;
for (long v = 10; v <= value; v *= 10) {
numberOfDigits++;
}
int[] array = new int[numberOfDigits];
int k = numberOfDigits - 1;
while (value != 0) {
array[k] = value % 10;
value /= 10;
k--;
}
return array;
}