Відповіді:
Спробуйте Character.getNumericValue(char)
.
String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);
виробляє:
x=5
Приємно в тому getNumericValue(char)
, що він також працює з рядками, як "el٥"
і "el५"
де, ٥
і ५
є цифрами 5 у східній арабській та хінді / санскриті відповідно.
Спробуйте наступне:
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
якщо u відняти знак char '0', значення ASCII не повинно бути відомим.
'0', '1', '2', ...
в ascii зростають . Так, наприклад, "0" в ascii - 48, "1" - 49, і т.д. Так, якщо ви візьмете, '2' - '0'
ви дійсно просто отримаєте 50 - 48 = 2
. Погляньте на таблицю ASCII, щоб краще зрозуміти цей принцип. Крім того, 'x'
засоби отримують значення ascii символу на Java.
- '0'
працював ... Я думав, що це якась глибока магія в тому, як Ява інтерпретувала символи чи що завгодно ... це справді було справою мене над тим, щоб щось ускладнити ...
Character.getNumericValue
Це, мабуть, найкраще з точки зору продуктивності, але це грубо:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
Це працює, якщо ви вважаєте, що ваш персонаж є цифрою, і лише в мовах, які завжди використовують Unicode, як Java ...
"el५"
де ५
цифра 5 в Індії. :)
'0'
повертати ціле число?
Просто віднімаючи символом "0" (нуль), знак char (з цифри "0" до "9") може бути перетворений в int (0 до 9), наприклад, "5" - "0" дає int 5.
String str = "123";
int a=str.charAt(1)-'0';
String a = "jklmn489pjro635ops";
int sum = 0;
String num = "";
boolean notFirst = false;
for (char c : a.toCharArray()) {
if (Character.isDigit(c)) {
sum = sum + Character.getNumericValue(c);
System.out.print((notFirst? " + " : "") + c);
notFirst = true;
}
}
System.out.println(" = " + sum);
Використання двійкового AND
з 0b1111
:
String element = "el5";
char c = element.charAt(2);
System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9