我試圖找到一個數字中的所有數字的產品,我將它們存儲爲一個字符串(由於int和長度的限制)。Java中'0'做什麼?
所以數量看起來是這樣的:
final String number = "1234567898765432123......etc"
如果我用這個代碼,它的工作原理:
product *= number.charAt(i + j) - '0';
它不會,如果我去掉 '0'。
我從另一個在線資源獲取了此代碼。有人可以解釋'0'是什麼嗎?
我試圖找到一個數字中的所有數字的產品,我將它們存儲爲一個字符串(由於int和長度的限制)。Java中'0'做什麼?
所以數量看起來是這樣的:
final String number = "1234567898765432123......etc"
如果我用這個代碼,它的工作原理:
product *= number.charAt(i + j) - '0';
它不會,如果我去掉 '0'。
我從另一個在線資源獲取了此代碼。有人可以解釋'0'是什麼嗎?
Ascii字符實際上是數字。 0 .. 9
數字是從十進制48開始的數字(0x30十六進制)。
'0' is 48
'1' is 49
...
'9' is 57
因此,要獲得任何字符數字的值,你可以去掉「0」,即48
'1' - '0' => 1
49 - 48 => 1
如果不刪除「0」(48)總總和將會超過48 * numberOfDigits
。
查看ascii table來查找數字。
請注意,'0'
是字符0
,而不是字符串"0"
包含字符'0'
。
字符和整數實際上是相同的東西,因爲每個字符都有一個代碼(ASCII,但在某些情況下也是Unicode)。
通過從字符串中的任意數字中減去'0'
,即可得到該整數的實際值。
'0' > 48
48 - 48 = 0 (integer value)
這同樣適用於所有其他整數。您可以使用其他字符做類似的事情,例如letter - 'A'
,根據字母在其中的位置爲每個字母分配一個數字。
字符存儲爲數字。例如,在ASCII中'0'等於48。所以,如果你想要一個字符轉換爲整數,你必須刪除「0」(或刪除48人的工作方式相同):
product *= number.charAt(i + j) - 48;
「0」是char值爲零。
當你編寫一個字符串時,你正在編寫一個'char'數據類型的數組,它被編譯器轉換成ASCII值(它具有相應的十進制數值)。
當你調用
number.charAt(i + j);
你實際上是產生ASCII值。
'0' 的ASCII值是:
'1':
。 。 。
'9':
所以,當你調用
number.charAt(i + j) - '0';
你實際上運行的ASCII值的操作零下48是它的實際價值爲整數。
例如
( '9' - '0')=(57 - 48)=(9 - 0)= 9
卸下從number.charAt(i + j)
0
會給你在數字(或integer
)的形式相同的字符。
當您在任何表達式中使用字符時,該字符將被其ASCII
值替換。爲'0'
(字符0)
ASCII值是48 爲'1'
(字符0)ASCII值是49
現在,如果number.charAt(i + j)
是'1'
然後在表達'1'
由49和'0'
代替由48取代這會給你1
(integer
)。
這些ascii字符可以被轉換爲整數。這些都是ascii表上的索引,所以請檢查並獲得第二個想法,我想你會得到它;) – Stefan