簡體   English   中英

Java-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM