java se面试小考题

时间:2022-05-20 17:08:05

编写一个程序,可以实现,123456789这九个数字只能出现一次,并且第一位能被一整除第二位能被二整除一直到第九位。

我在看到题目的时候,先想到的是循环输出,用位数编写循环,后来在查阅资料后,我编写的代码如下

public class demo2 {
public void run(){
for(Integer i = 123456789;i<987654321;i++){
String a = i.toString();
if(haveSameChar(a)){
if(a.indexOf("0")==-1){
if(i.parseInt(a.substring(0, 1))%1==0 &&
i.parseInt(a.substring(0, 2))%2==0 &&
i.parseInt(a.substring(0, 3))%3==0 &&
i.parseInt(a.substring(0, 4))%4==0 &&
i.parseInt(a.substring(0, 5))%5==0 &&
i.parseInt(a.substring(0, 6))%6==0 &&
i.parseInt(a.substring(0, 7))%7==0 &&
i.parseInt(a.substring(0, 8))%8==0 &&
i.parseInt(a.substring(0, 9))%9==0){
System.out.println(i);
}
}
}
}
}
public boolean haveSameChar(String s){
for(int i =0;i<s.length();i++){
char ch = s.charAt(i);
String s1 = s.substring(i+1);
if(s1.indexOf(ch)>=0){
return false;
}
}
return true;
}
public static void main(String[] args) {
demo2 d = new demo2();
d.run();
}
}
最后的结果,我上传如下照片