2013-09-11 3 views
1

Я был в этом около часа, и я действительно не могу понять это, я должен сделать что-то, что подсказывает и читает имя и фамилию пользователя (отдельно) , Затем напечатайте строку, состоящую из первой буквы имени пользователя, за которой следуют первые пять символов имени пользователя, а затем случайное число в диапазоне от 10 до 99. Предположите, что фамилия не менее пяти букв длинныйСлучайное имя пользователя генератор со случайным числом за ошибками

import java.util.Scanner; //Needed for the Scanner class 
import java.lang.String; 

import java.util.Random; 

public class UsernameGenerator 
{  
public static void main(String[] args) //all the action happens here!  
{ Scanner input = new Scanner (System.in); 
    Random generator = new Random(); 

    int num1; 
    num1 = generator.nextInt(10-99); 

    String firstName; 
    String lastName; 
    String concatenatedName; 

    System.out.println("Enter your First Name: "); 
    firstName = input.next(); 



    System.out.print("Enter your Last Name: "); 
    lastName = input.next(); 


    // We'll take the first character in the first name 
    concatenatedName = firstName.charAt(0) + lastName.substring(0, 5) + num1; 



    Random rnd = new Random(); // Initialize number generator 
    if (lastName.length() > 5) 
     concatenatedName += lastName.substring(0,5); 
    else 
     concatenatedName += lastName; // You did not specify what to do, if the name is shorter than 5 chars 

    concatenatedName += Integer.toString(rnd.nextInt(99)); 


    System.out.println(); 

} 
} 
+1

'concatenatedName = firstName.charAt (0) + lastName.substring (0, 5) + num1;...' на этой линии, 'concatenatedName' должен содержать раствор Удалить все после этого –

+0

@JanDoerrenhaus Я просто скомпилировал и получил эту ошибку Исключение в потоке «main» java.lang.IllegalArgumentException: n должно быть положительным \t at java.util.Random.nextInt (Неизвестный источник) \t от UsernameGenerator.main (UsernameGenerator.java:24) и теперь он говорит, что concatenatedName никогда не читается, жаль, что я чрезвычайно новичок в этом: P –

+2

'generator.nextInt (10-99);' должен вызывать исключение IllegalArgumentException , Вы не можете передать отрицательные числа. Измените на 'generator.nextInt (90) + 10' – Sinkingpoint

ответ

0

Вы должны попробовать что-то подобное, чтобы иметь дело с тем, что последнее имя может не содержать 5 символов. Последняя часть вашей функции - где вы устанавливаете проверку длины и добавляете другое случайное число, не требуется.

// We'll take the first character in the first name 
    try 
    { 
     concatenatedName = firstName.charAt(0) + lastName.substring(0, 5) + num1; 
    } 
    catch (Exception e) 
    { 
     // Here we deal with the fact we might not be able to get 5 characters from the last name 
     // - Just add the full lastname 
     concatenatedName = firstName.charAt(0) + lastName + num1; 
    } 

    System.out.println(concatenatedName); 
+2

Исключения не должны быть частью обычного потока программы. Вместо этого, как насчет 'lastName.substring (0, Math.min (5, lastName.length()))? –

+0

Я согласен, что это будет лучшее решение - однако также не идеально, что полное решение выполняется в основном методе. –

+0

еще раз спасибо огромной помощи! –

0

Это будет печатать то, что хотел, в конце кода, а не плохой старт, сохранить тяжелую работу

кто может понять эту часть? Я практикую (:

Затем, если хотите, улучшите его, чтобы, если фамилия имеет длину менее 5 символов, она вставляет лишние случайные символы или цифры, чтобы сгенерированное имя пользователя по-прежнему содержало 8 символов. дополнительное повышение

Random rnd = new Random(); // Initialize number generator 
if (lastName.length() > 5) 
    concatenatedName += lastName.substring(0,5); 
else 
    concatenatedName += lastName; // You did not specify what to do, if the name is shorter than 5 chars 

concatenatedName += Integer.toString(rnd.nextInt(99)); 
System.out.println(concatenatedName); 
Смежные вопросы