Как я могу продолжать генерировать эту серию (xyz * 3) == zzz после 9999 - PullRequest
0 голосов
/ 11 мая 2019

Этот код генерирует (xyz + xyz + xyz = zzz серии для 0 до 9999).Если я пытаюсь пройти 9999, я получаю NumberFormatException.

Код:

//package com.uttara.todo;

public class Addition {

    public static void main(String[] args) {

        int x=1;
        int y=1;
        int z=1;
        for( x=1;x<9999;x++)//this works fine till 999 at 9999 throws numberformat exception
        {
            for( y=1;y<9999;y++)
            {
                for( z=1;z<9999;z++)
                {
                    String str=""+x+y+z;
                    String str1=""+z+z+z;

                    **int temp=Integer.parseInt(str);//this throws exception**
                    int temp1=Integer.parseInt(str1);
                    //temp=temp*3;
                    //System.out.println(temp);
                    if((temp*3)==temp1)
                        System.out.println(temp);
                        //break;

                    //x++;
                }
            }
            x++;
        }
        y++;


        //System.out.println("x="+x+"y="+y+"z="+z);
    }
}

И получаю ошибку:

исключение числового формата при 100010001000

1 Ответ

1 голос
/ 11 мая 2019

Каждый тип имеет свои ограничения, поэтому целое число в Java находится между -2 ^ 31 = -2147483648 и 2 ^ 31-1 = 2147483647

Поэтому, как только вы построите строку с номером за пределами этой области, вы получите это исключение.

Вы можете выбрать другой тип. Следующий возможный тип, который вы можете использовать, это Long: Long.MAX_VALUE = 9223372036854775807 Long.MIN_VALUE = -9223372036854775808

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...