java se面试小考题

编写一个程序,可以实现,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();
	}
}
最后的结果,我上传如下照片


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值