问题很简单,for循环取数然后个位十位等三次方相加判断与本身是否相等。此题在西科大OJ提交一直PE,问题在于在最后一个输出数后面不能有空格,所以代码不能简单的(num+“ ”)了事。解决思路一是单独处理最后一个水仙花数但判断是否最后一个比较困难,思路二单独处理第一个水仙花数而后面的水仙花数都改成(“ ”+num)这种方式交简单。JAVA刚入手代码并不好看仅供参考。
import java.util.Scanner; public class Main { void getNum(int i,int j) { int flag=0; for(int k=i;k<j;k++) { if(k==this.getM(k)) { if(flag==0) { System.out.print(k); }else { System.out.print(" "+k); } flag=1; } } if(flag==0) { System.out.println("no"); }else { System.out.print("\n"); } } public int getM(int i) { int num=0; while((i>0)) { num+=this.get3Power(i); i=i/10; } return num; } public int get3Power(int i) { return i*i*i; } public static void main(String[] args) { Scanner in=new Scanner(System.in); int i=0,j=0; while(true) { i=in.nextInt(); j=in.nextInt(); if(i==0&&j==0) { break; }else { Main mymain=new Main(); mymain.getNum(i, j); } } } }