Вы печатаете "java .util. Random@6f94fa3e" в одной строке с вашими 10-ю случайными буквами, потому что метод print в вашем для l oop отобразит текущую строку, но не прекратит работу Это. Метод println, с другой стороны, будет печатать на текущей строке и завершать ее, что означает, что ваш следующий отображаемый текст будет находиться на новой строке. Например:
System.out.print("This is ");
System.out.println("the same line.");
System.out.println("This is a new line.");
// Output:
// This is the same line.
// This is a new line.
Вы можете улучшить его, вставив символ новой строки в конце:
System.out.println("\n" + r);
Если вы не уверены, почему вы получаете "java .util .Random448139f0 "напечатан в первую очередь. Вы пытаетесь напечатать объект, для которого не реализован метод .toString (). Чтобы напечатать число, сгенерированное с использованием этого объекта, вы можете поместить его в переменную и распечатать позже:
int randomNumber = 0;
for (int i = 0; i < 10; i++) {
randomNumber = r.nextInt(alphabet.length());
System.out.print(alphabet.charAt(randomNumber));
}
System.out.println("\n" + randomNumber);
Редактировать :
Некоторые Усовершенствования, которые могут быть полезны:
Рекомендуется объявлять переменные в новой строке, даже если они совместно используют один и тот же тип:
int N = alphabet.length();
int rndposition = (int) (Math.random() * 10 + 1);
int rndletter = alphabet.charAt(1);
Улучшает читаемость, избегает путаницы и потенциальные ошибки, которые могут быть внесены с таким объявлением. Вы можете проверить эту статью или эту , чтобы полностью понять подводные камни.
Еще одно усовершенствование, которое приходит мне в голову, - это соглашение о верблюдах для именования переменных, которых нет в вашем коде. Вы можете обратиться к этой странице для получения дополнительной информации.
Я верю, что все остальное придет с практикой :) Наслаждайтесь своим приключением!