java整数未按预期工作

时间:2017-12-06 06:17:39

标签: java int

这是我的代码 这应该输出(8477559501395327),但它给(2084842641) 这是问题所在。我尝试了长而不是int,但它提供了一些不同的答案

    int counter = 0;
    int counter2 =0;
    int k=203903;
    int result=0;
    int countequalk =0;
    int i=0;

   while(true){


        if( i % 2 != 0){
            counter++;
            if(counter<k){
                counter2=counter2+counter;
            }
            //System.out.println(counter+" "+i);

           if(counter>counter2&&counter<=counter2+k){

               result = result+i;
               countequalk++;
           }
           if(countequalk==k){
               break;
           }
        }
        i++;

    }

    System.out.println(result);

1 个答案:

答案 0 :(得分:2)

号码8477559501395327不适合int - 支持2^31 - 1指定的值Integer.MAX_VALUE。请尝试使用long,其最大值为2^63 - 1,如Long.MAX_VALUE所示。此值大于8477559501395327,因此适合。对于更大的数字,最好使用BigInteger