import java.util.Scanner;
public class Lily01{
public static void main(String[]args){
System.out.println("请输入一个三位数整数");
Scanner sc=new Scanner(System.in);
int li=sc.nextInt();
int li01=li;
if(li01>=1000&&li01<100){
System.out.println("输入有误");
}else if(li01<1000&&li01>=100){
int g=li01%10;
int s=li01/10%10;
int b=li01/10/10%10;
if(li01==g*g*g+s*s*s+b*b*b){
System.out.println(li01+"是水仙花数");
}else{
System.out.println(li01+"不是水仙花数");
}
}
}
}
1.首先规范命名,方便读
2.li01>=1000&&li01<100 检查这个条件是否存在逻辑问题
3.代码可读性很重要
int g=li01%10;
int s=li01/10%10;
int b=li01/10/10%10;
li01>=1000&&li01<100因为这个条件不可能满足,应该是||
import java.util.Scanner;
public class Lily01 {
public static void main(String[] args) {
System.out.println("请输入一个三位数整数");
Scanner sc = new Scanner(System.in);
int li01 = sc.nextInt();//li除了赋值给li01外没有其他用途,可以去掉
if (li01 >= 1000 || li01 < 100) {//这个是或,不是与,小于100和大于1000不可能同时成立
System.out.println("输入有误");
} else { //这个可以不用else if,因为上面的条件不满足,剩下的只有(li01<1000&&li01>=100)的情况了
int g = li01 % 10;//个位
int s = li01 / 10 % 10;//十位
int b = li01 / 10 / 10 % 10;//百位,li01/10/10%10或者li01/100
if (li01 == g * g * g + s * s * s + b * b * b) {
System.out.println(li01 + "是水仙花数");
} else {
System.out.println(li01 + "不是水仙花数");
}
}
}
}
第一个判断条件是或者,不是且啊,判断条件注意一下