1. 程式人生 > 程式設計 >Go 實現一次性打包各個平臺的可執行程式

Go 實現一次性打包各個平臺的可執行程式

技術標籤:問題解決java字串

字元轉整型會改變值的一個小問題

水仙花數問題

無聊的時候偶然想寫一寫程式碼,突然想到了水仙花數問題;

就是給一個三位數,例如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從字元轉整型值從’1’變成了49

根源

雖然字元可以轉整型,但是字元型根本上來說也是一個數,是有編碼的,所以轉int的時候不是把值轉出來,轉出來的是對應的編碼;

解決

所以我想到了int的封裝類,如果我沒記錯的話,他好像是有個解析字串的方法,雖然我這是字元,但是不分家嘛;

Integer.parseInt(String str);

將字串str解析為int整型,並返回一個int值;

下面是完成的可執行程式碼:

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 + "是水仙花數");
    }
}

執行結果:在這裡插入圖片描述