字元轉整型
阿新 • • 發佈:2020-12-26
水仙花數問題
無聊的時候偶然想寫一寫程式碼,突然想到了水仙花數問題;
就是給一個三位數,例如123,是一個整型,如果三個位上的數進行立方和後得到的值等於這個數;
這個數就是一個水仙花數;
於是在紙上寫了一個樣本,回寢室後在電腦上打了出來;
思路
我的思路很簡單啊,不是一個三位的整型嘛;
將它轉型成字串就可以遍歷其中的每一位然後進行平方和,然後轉回int型進行比較就行了;
for (int n = 100; n <= 999; n++) {
int sum = 0;
String str = "" + n;
for (int i = 0; i < str.length(); i++) {
int q = (int) str.charAt(i);
sum = sum + (int) Math.pow(q, 3);
}
if (sum == n) {
System.out.println(n + "是水仙花數");
}
}
問題
但是執行出來發現一個水仙花數都沒有,就很奇怪,設了個斷點
才發現,q從字元轉整型值從'0'變成了49
根源
雖然字元可以轉整型,但是字元型根本上來說也是一個數,是有編碼的,所以轉int的時候不是把值轉出來,轉出來的是對應的編碼;
解決
所以我想到了int的封裝類,如果我沒記錯的話,他好像是有個解析字串的方法,雖然我這是字元,但是不分家嘛;
Integer.parseInt(String str);
下面是完成的可執行程式碼:
for (int n = 100; n <= 999; n++) {
int sum = 0;
String str = "" + n;
for (int i = 0; i < str.length(); i++) {
int q = Integer.parseInt("" + str.charAt(i));
sum = sum + (int) Math.pow(q, 3);
}
if (sum == n) {
System.out.println(n + "是水仙花數");
}
}
執行結果: