Как мне собрать числа в Java? - PullRequest
       3

Как мне собрать числа в Java?

1 голос
/ 01 октября 2011

По какой-то причине, когда я запускаю следующий код, программа печатает «JDN4» или «JDN16», когда я всегда хочу, чтобы он печатал «JDN», за которым следуют три числа в диапазоне от 0 до 9; например, «JDN123» или «JDN045» или «JDN206». Что не так с кодом?

import java.util.*;

public class Document2 {
    public static void main(String[] args) {
        String initials = "JDN";
        int randomNumbers;
        Random generator = new Random();
        int randomNumber1 = generator.nextInt(9);
        int randomNumber2 = generator.nextInt(9);
        int randomNumber3 = generator.nextInt(9);
        randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
        String userName = initials + randomNumbers;
        System.out.println("Your username is " + userName +  ".");
    }
}

Ответы [ 7 ]

6 голосов
/ 01 октября 2011

Ваша проблема: randomNumbers объявлен как int, поэтому, когда вы используете + в других целых числах, он будет суммировать целые числа, а не объединять их.

Итак, если мыЕсли бы мы использовали ваш подход, нам понадобилась бы строка:

String userName = initials + randomNumber1 + randomNumber2 + randomNumber3;

Но было бы намного проще просто сгенерировать число от 0 до 999 и дополнить его нулями:

int randomNumber = generator.nextInt(1000);
String usernName = initials + String.format("%03d", randomNumber);

Что еще стоит отметить, это то, что Random.nextInt(n) генерирует случайное число между 0 (включительно) и n (эксклюзивом), так что вы, вероятно, должны делать .nextInt(10) , если вы хотите число от 0 до 9.

3 голосов
/ 01 октября 2011

Попробуй,

String userName=String.format("%s%d%d%d",initials,randomNumber1,randomNumber2,randomNumber3);
3 голосов
/ 01 октября 2011

Предположим, у вас есть три числа:

int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;

Ожидаете ли вы, что randomNumbers будет 345?Или вы ожидаете, что это будет 12?

Теперь попробуйте это:

String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;

Что вы получите на этот раз?

2 голосов
/ 01 октября 2011
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;

Вы добавляете числа, а не объединяете их.

Предлагаемое решение: используйте только 1 случайное число с

generator.nextInt(1000);

Или вы можете перейти как:

String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;

Но я почти уверен, что вы получите 2 или даже 3 раза одно и то же число, поэтому вам следует использовать первый подход.

1 голос
/ 01 октября 2011

Неправильно то, что оператор + выполняет сложение, а не объединение при использовании int переменных.

Использование

String randomNumbers = Integer.toString(randomNumber1) + Integer.toString(randomNumber2) + Integer.toString(randomNumber3);

для преобразования чисел в строки и их объединения.

1 голос
/ 01 октября 2011

Вы добавляете числа сюда.

randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;

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

randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);
0 голосов
/ 01 октября 2011

Вы добавляете три цифры, которые в лучшем случае дадут вам 27. Вы хотите объединить строковое представление этих цифр.

Тем не менее, почему бы вам просто не сгенерировать случайное число от 0 до999

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