![](/img/trans.png)
[英]Not getting first character after an attempt to downcast an object in java using charAt();
[英]Java - charAt getting wrong character
我正在嘗試一種算法,可以執行以下操作:
64
797
7
===
79
這將需要7,再乘以7,然后寫下答案的最后一位數字,然后再乘以7,再將答案的第一位數字與7乘以7,依此類推-如果您這樣做了三遍(寫出來) (向下),您得到的是我在那兒寫的乘法。
我得到的代碼不好,沒有以這種形式顯示(例如)上述內容:
7,9,4
9,7,6
等等,我得到這樣的東西:
7, 9, 52
9, 55, 54
我的代碼:
for(int i = 0; i<3; i++){//Run the code three times
temp=upper*7%10+tens;//get the temp but keeping the upper because I am going to need it for the tens part
tens=(upper*7+"").charAt(0);//get the first character of upper*7
System.out.println(upper+", "+temp+", "+tens);
upper=temp;
}
據我所知,問題出在charAt,因為顯然7 * 7的第一個字符不是52。
編輯現在代碼可以正常工作了,我還有另一個問題。 我嘗試了新的工作代碼(將tens用作char的字符串值的int值,而不只是char),我還有另一個問題。 萬歲!
Last tens: 0 Now's plain number:7, New:9, Tens:4
Last tens: 4 Now's plain number:9, New:7, Tens:6
Last tens: 6 Now's plain number:7, New:15, Tens:4
Last tens: 4 Now's plain number:15, New:9, Tens:1
Last tens: 1 Now's plain number:9, New:4, Tens:6
現在,我的代碼與舊代碼相同,只是固定了數十個。 但是現在,我的數字是15。 那應該是個數字。 怎么了? 老實說,我不知道我寫的代碼是否能滿足我的目的。 用什么代碼?
我強烈懷疑問題出在tens
種類型上。 您尚未在代碼中顯示此內容,但我懷疑它是int
。
所以這行:
tens = (upper*7+"").charAt(0);
取的第一個字符從字符串,然后將其存儲在一個int
。 因此,例如,字符“ 4”為Unicode 52(“ 0”)為48。轉換為int
只是將UTF-16代碼單元從無符號的16位值轉換為有符號的32位值。
然后,您將顯示tens
的值-但如果tens
確實是一個int
,它將顯示為數字 。
據我所知,問題出在charAt,因為顯然7 * 7的第一個字符不是52。
好吧,字符串表示形式7 * 7的第一個字符將是'4'。 將其轉換為int
,您將看到52。
如果只想將tens
用作char
,則應將其聲明為char
類型。 當然,您不應該對該值進行算術運算-但是,當您顯示該值時,會看到顯示4,因為字符串轉換仍會將其視為字符而不是數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.