求4位车牌号:
     特征:1. 前两位数字相同
           2. 后两位数字相同,但与前两位不同
           3. 是某个整数平方
以下我写的代码:
public class CarLisence {
      public static void main(String [] args){
       new GuessNum().guess();
      }
}
class GuessNum{
public void guess(){
int [] a=new int[4];

int n,i,fac ;
for(n=33;n<100;n++){
fac=(int)Math.pow(n, 2);
for(i=0;i<=3;i++){
a[i]=fac%10;
fac=fac/10;
}
       if(a[0]==a[1]&&a[2]==a[3]){
        System.out.println("number:"+a[3]+a[2]+a[1]+a[0]);
       }
       
}
}
}
望指点!
各位高手也贴一下代码,让小弟看看各位的思路学习一下

解决方案 »

  1.   

    可以这样。public class CarLisence {
    public static void main(String[] args) {
    new GuessNum().guess();
    }
    }
    class GuessNum {
    public void guess() {
    int n, i, fac;
    for (n = 33; n < 100; n++) {
    fac = (int) Math.pow(n, 2);
    String s = String.valueOf(fac);
    if (s.charAt(0) == s.charAt(1) && s.charAt(2) == s.charAt(3)) {
    System.out.println("number:" + s);
    } }
    }
    }
      

  2.   

    学习了,相比我那个,这个可以让系统少做很多次循环。
    charAt()就是寻找一个字符串中每个字符的位置是么?
      

  3.   

    charAt(index)是寻找字符串在某个位置index的字符,应该是楼主要表达的意思吧。
      

  4.   

    但是速度比你慢。这个就是个权衡。某个具体的程序,是否性能很关键,如果是,就该用你那个纯数学方法。如果不是,可以考虑直接用更简单的API
      

  5.   

    import java.util.*;class TestJava15 
    {
    public static void main(String[] args) 
    {
    int num1 = 0; //前两位
    int num2 = 0; //后两位
    int s = 0;
    int result = 0; ArrayList<Integer> al = new ArrayList<Integer>(); for (int i=32; i<100; i++)
    {
    s = i*i;
    al.add(s);
    } Iterator it = al.iterator(); while (it.hasNext())
    {
    int a = (Integer)it.next();

    num1 = a/100;
    num2 = a%100; if(num1/10 == num1%10 && num2/10 == num2%10 && num1 != num2)
    {
    result = a;
    }

    } System.out.println(result); }
    }
      

  6.   

    for(int i = 1; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
    int z = i * 1100 + j * 11;
    int result = (int)Math.pow(Math.round(Math.sqrt(z)), 2);
    if(z == result) {
    System.out.println(z);
    }
    }
    }
      

  7.   


    忘了加判断if(i == j) continue;
      

  8.   

    for(int i = 2; i < 10; i++) {
    int z = i * 1100 + (11 - i) * 11;
    int result = (int)Math.pow(Math.round(Math.sqrt(z)), 2);
    if(z == result) {
    System.out.println(z);
    }
    }这个循环次数更少
      

  9.   

    嗯,学习了,另一种思路!哈哈!谢谢!Math.round就是取最接近的整数是么?