没有输出下图的判断,是因为在is方法里阻塞了。
在is()方法判断的时候,不应该判断是否(aaa)+(bbb)+(ccc) 等于shuru();
因为这样会执行shur()方法,又回到reader.nextInt()等待控制台输入数据了。
我根据你的逻辑,改了下,整体代码如下:
public class c1t3 {
public static Integer shuru() {
Scanner reader = new Scanner(System.in);
System.out.println("123");
int date = reader.nextInt();
return date;
}
public static void main(String[] args){
System.out.println("请输入一个三位数的整数");
String a= shuru().toString();
String[]b=a.split("");
int[] math=new int[b.length];
for(int i=0;i<b.length; i++) {
math[i] = Integer.parseInt(b[i]);
}
if (is(math[0], math[1], math[2], Integer.parseInt(a))) {
System.out.println("这个数是水仙数");
} else {
System.out.println("这个不是水仙数");
}
}
public static boolean is(int a,int b,int c, int num){
return(a*a*a)+(b*b*b)+(c*c*c)== num;
}
}
超级感谢你的帮助!!!!!
for (int i = 100; i <= 999; i++) {
int hundreds = i / 100;
int tens = (i % 100) / 10;
int ones = i % 10;
if (hundreds * hundreds * hundreds + tens * tens * tens + ones * ones * ones == i) {
System.out.println(i + "是水仙花数");
} else {
System.out.println(i + "不是水仙花数"); }
}
谢谢这个方法比我这个简便多了,但我还是想知道这个错哪了。
is()方法不应该再调用shuru(),应该把上次输入结果传进来比较。
另外希望注意下书写规范
嗯嗯,谢谢指导,感谢你!!!
把shuru()的值先保存了,然后用这个保存了的值进行==比较,不直接用shuru()来比较
感谢你的帮助
代码被遮住了,没有发现吗
– realzhangsan 10个月前