日期: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判断语句在外即可解决