Как преобразовать случайную строку в целое, чтобы получить другое целое число, а затем преобразовать их в строку для отправки в полезную нагрузку JSON - PullRequest
0 голосов
/ 02 октября 2019

У меня есть полезная нагрузка запроса JSON, в которой мне нужно передать 2 значения: значение-1 - это случайное число из 10 цифр. Пример: 8000000000 значение-2 - это увеличенное число, но есть только подстрока, включающая только последние4 цифры увеличенного числа значения-1, т.е. если я увеличу 80000000000 (что является моим значением-1) на 1000, я получу 8000001000, поэтому в значении 2 я хочу отобразить только последние 4 цифры, которые равны 1000

Я сгенерировал случайную строку для значения-1, используя приведенный ниже код:

Generex generex = new Generex(regex); //where regex is 8605005[0-9]{3}
String randomString = generex.random();
System.out.println("This is the Random number->" + randomString);

Теперь я анализирую строку в целое число, используя приведенный ниже код:

int startnumbervalue; 
    try {
        startnumbervalue = Integer.parseInt(randomString);
    } catch (NumberFormatException nfe) {
        nfe.printStackTrace();
    }
    System.out.println("This is the start number->"+startnumbervalue);
}   

Это дает ошибку при инициализации переменной, для startnumbervalue, однако, когда я присваиваю int startnumbervalue = randomstring - это выдает ошибку, говорящую Изменить тип startnumbervalue на String.

Кроме того, в моем методеу меня есть 4 аргумента:

`String regex` // to pass the value to get the random number- here i am passing- 8605005[0-9]{3}

`String key`  // to store the random value generated - this is my value-1

`String counter` // to get the stop range

`String endrange` // the counter and the value 1 needs to be added to get the end range and subsequently i need to substring this to get only the last 4 digits.

1 Ответ

0 голосов
/ 02 октября 2019

Первый выпуск)

Вы должны инициализировать переменную startnumbervalue с помощью некоторого номера по умолчанию, использовать 0 или -1 или что-то еще, потому что вы присваиваете ей значение в блоке try-catch, но вашоператор print не находится внутри этого блока. Если вы не хотите назначать значение по умолчанию, вы должны поместить оператор print в блок try.

Второй выпуск)

Максимальное значение, которое может хранить переменная int, составляет 2 147 483 647. но число, которое вы пытаетесь проанализировать, больше, поэтому оно не подходит для типа int. Измените тип на длинный. переменная типа long может хранить значения до 9,223,372,036,854,775,807.

    Generex generex = new Generex("8605005[0-9]{3}"); 
    String randomString = generex.random();
    System.out.println("This is the Random number->" + randomString);
    long startnumbervalue = 0; // changed to long 
    try {
        startnumbervalue = Long.parseLong(randomString);   // changed to Long.parseLong
    } catch (NumberFormatException nfe) {
        nfe.printStackTrace();
    }
        System.out.println("This is the start number->"+startnumbervalue);
    }

По моему мнению, вам вообще не нужен блок try-catch, потому что ваше регулярное выражение всегда возвращает строку из десяти цифр. Вы можете удалить его полностью:

    Generex generex = new Generex("8605005[0-9]{3}"); 
    String randomString = generex.random();
    System.out.println("This is the Random number->" + randomString);

    long startnumbervalue = Long.parseLong(randomString);        
    System.out.println("This is the start number->"+startnumbervalue); 

    long lastFourDigits = startnumbervalue % 10000;
    System.out.println("last four digits: "+lastFourDigits); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...