回答:
お試しください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 の値が昇順であるため。たとえば、ASCIIの「0」は48、「1」は49などです。したがって、'2' - '0'
実際に取得する場合は、を取得するだけです50 - 48 = 2
。この原則をよりよく理解するために、ASCIIテーブルを見てください。また、'x'
Javaで文字のASCII値を取得することも意味します。
- '0'
働いていた...私はそれがJavaの文字を解釈するか、どのような方法でいくつかの深い魔法だと思った...これは本当に何かを複雑にわたり、私の場合だった...
Character.getNumericValue
これはおそらくパフォーマンスの観点からは最良ですが、大雑把です:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
あなたの文字が数字であると想定し、Javaのように常にUnicodeを使用する言語でのみ機能します...
"el५"
でそれを試してください५
。:)
'0'
が整数値を返すのはなぜですか?
char '0'(zero)を単に減算することで、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