当前位置: 代码迷 >> Java相关 >> 大家帮忙看看这个程序到底哪错了,实在找不出来错的原因!!!
  详细解决方案

大家帮忙看看这个程序到底哪错了,实在找不出来错的原因!!!

热度:22   发布时间:2009-10-25 23:12:00.0
大家帮忙看看这个程序到底哪错了,实在找不出来错的原因!!!
package cn;
public class PlateNumber{
    public static void main(String args[]) throws Exception{
        long i=1000,plate=2;
        int r=5;
        String numI,n1;
        int[] num=new int[4];
        long    n2=0;

        while(plate==2 && i<=9999){
            System.out.println("t "+r);
            numI=String.valueOf(i);
            for(int j=0;j<4;j++){

                n1=numI.substring(j,j+1);  //substring 用法:从j处开始截取j到j+1个字符
                           // i,  j       从j处开始截取i到i区间内的字符
        //        System.out.print(j+"-"+n1+" numI="+numI+"    ");
                num[j]=Integer.valueOf(n1);
            }   
                           
            r=r*r;   //错误出在这里
               
            if(num[0]==num[1] && num[2]==num[3] && num[0]!=num[3] && r==i){
                System.out.println("Number"+(n2+1)+" Plate Number is "+i);
                return;
               
            }
            i++;
        }
        
    }
}
如果加上    r=r*r   
程序就出错,送个while() 后r的值不是0就是1,为什么呀。

----------------解决方案--------------------------------------------------------
t 5
t 25
t 625
t 390625
t -2030932031
t -2052264063
t -1083564287
t 781532673
t -1741784063
t -59967487
t 689565697
t 322166785
t 711442433
t 1691320321
t 161415169
t 322830337
t 645660673
t 1291321345
t -1712324607
t 870318081
t 1740636161
t -813694975
t -1627389951
t 1040187393
t 2080374785
t -134217727
t -268435455
t -536870911
t -1073741823
t -2147483647
t  1.........................
类型超出int类型的最大范围
请使用long
----------------解决方案--------------------------------------------------------
用long也不行
----------------解决方案--------------------------------------------------------
原来是数值越界了,谢谢大家帮忙。
----------------解决方案--------------------------------------------------------
  相关解决方案