水仙花数

248 阅读1分钟

日期:2021年9月28日

出处:小案例

正文


初次代码

import java.util.ArrayList;
//水仙花数
public class ShuiXian {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 100; i < 1000; i++) {
            list.add(i);
        }
        for (Integer l : list) {
            String s = Integer.toString(l);     //100,101,102...
            char[] c = s.toCharArray();
            char a = c[0];
            char b = c[1];
            char d = c[2];
            int aa = (int)a - (int)('0');//1
            int bb = (int)b - (int)('0');//0
            int dd = (int)d - (int)('0');//0
            int ee = Integer.valueOf(l);
            if (Math.pow(aa,3)+Math.pow(bb,3)+ Math.pow(dd,3) == ee ) {
                System.out.println(c);
            }
        }
    }
}

错误代码

package Anli;

//水仙花数
public class ShuiXian_1 {
    public static void main(String[] args) {
        for (int i =100;i<1000;i++){
            String s = Integer.toString(i);
            for (int n = 0;n< s.length();n++){
                char at = s.charAt(n);
                int a = at - '0';
                if (Math.pow(a,3) == i){
                    System.out.println(i);
                }
            }
        }
    }
}

改正代码1:charAt()

package Anli;

//水仙花数
public class ShuiXian_1 {
    public static void main(String[] args) {
        for (int i =100;i<1000;i++){
            String s = Integer.toString(i);
            int sum = 0;
            for (int n = 0;n< s.length();n++){
                char at = s.charAt(n);
                int a = at - '0';
                sum += Math.pow(a,3);
            }
            if (sum == i){
                System.out.println(i);
            } 
        }
    }
}

改正代码2:toCharArray()

package Anli;
public class ShuiXian_2 {
    public static void main(String[] args) {
        for(int i=100;i<1000;i++){
            char[] ch = Integer.toString(i).toCharArray();
            int sum = 0;
            for(int j=0;j<ch.length;j++){
                int n = Integer.valueOf(ch[j] - '0');
                sum+=Math.pow(n,3);
            }
            if(sum==i){
                System.out.println(i+"是水仙花数");
            }
        }
    }
}


总结

java中遍历字符串的三种方法


String str="2019 come on";

// 方法一:.length(), charAt()

for(int i=0;i < str.length();i++) {

System.out.println(str.charAt(i));

}

//方法二:.length(), substring(i ,i+1)

for(int i=0;i < str.length();i++) {

System.out.println(str.substring(i,i+1));

}

//方法三:.toCharArray()

char[] c = str.toCharArray();

for(int i=0;i < c.length;i++) {

System.out.println(c[i]);

}

代码错误原因:逻辑错误

if判断语句在外即可解决