2013-03-14 2 views
-1

Мне нужно создать случайную строку букв, но никогда раньше не использовал случайный класс.Создание случайной альфа-строки в Java

вот спецификация: Создайте небольшую программу, которая попросит пользователя ввести свое имя. Сохраните имя в строке Напечатайте имя Попросите пользователя поменять фамилию Манипулируйте строкой новую фамилию. Напечатайте новое имя. Создайте бесконечный цикл, который случайным образом изменит строковую переменную. Посмотрите, сбой вашей программы.

до сих пор у меня есть этот

import java.util.Scanner; 
import java.util.Random; 

public class StringNames { 

    public static void main(String[] args) { 

     System.out.println("Please enter a name"); 

     Scanner myInput = new Scanner(System.in); 
     String firstName = new String(); 
     firstName = myInput.next(); 

     String lastName = new String(); 
     lastName = myInput.next(); 

     System.out.println(firstName + " " + lastName); 

     System.out.println("Please change your last name"); 
     lastName = myInput.next(); 

     System.out.println(firstName + " " + lastName); 

     for (;;) { 

     } 
    } 

} 

Как я могу создать случайную последовательность букв, чтобы изменить фамилию в бесконечном цикле? Я не уверен, как долго должна быть строка. Чем проще код, тем лучше. Я медленно.

Спасибо за ваше руководство

+6

Look! После нажатия [link] (http://stackoverflow.com/questions/41107/how-to-generate-a-random-alpha-numeric-string-in-java?rq=1) с правой стороны эта страница, которая может быть полезна! –

+0

Я видел эту ссылку, но мне не понравилось ни в одном из ответов. Однако, спасибо. –

+0

[Этот ответ] (http://stackoverflow.com/a/2863888/1690982) может быть полезен. – ddmps

ответ

1

Во-первых, только небольшая вещь:

String lastName=myInput.next(); 

является гораздо более эффективным, чем создание строки со строкой класса, а затем назначить эту строку значение.

Мое решение вашей проблемы:

import java.util.Scanner; 
    import java.util.Random; 

public class StringNames { 

public static void main(String[] args) { 
    Random generator=new Random(); 
    Scanner myInput = new Scanner(System.in); 

    System.out.println("Please enter a name"); 
    String firstName = myInput.next(); 

    System.out.println("Please enter a last name"); 
    String lastName = myInput.next(); 

    System.out.println("Your name is:"); 
    System.out.println(firstName + " " + lastName); 

    System.out.println("Please change your last name"); 
    lastName = myInput.next(); 

    System.out.println(firstName + " " + lastName); 
    char[] lastNameChar=lastName.toCharArray(); 
    for (int i=0;i<lastNameChar.length;i++) { 
     int randomNum=generator.nextInt(133); 
     lastNameChar[i]=(char)randomNum; 

    } 
    lastName=String.valueOf(lastNameChar); 
    System.out.println(firstName + " " + lastName); 
} 
} 

Что это делает, что он запрашивает имя и т.д., как указано. Тогда существует цикл for. Когда они меняют свое имя, эта строка преобразуется в массив символов, который позволяет нам получить длину и изменить отдельные элементы «String». Затем мы генерируем случайное число, которое должно использоваться как случайно порожденный символ.

WE Затем переведите это случайно генерируемое число в символ casting как таковой.

Что это делает, что он немедленно изменяет значение символа в таблице символов ASCII: ASCII Characters

Мы по-прежнему на длину своих новых фамилий. Затем преобразуйте массив char в строку и напечатайте строку.

Для того, чтобы уточнить диапазон вашего генератора чисел (в минуту она генерируемой между 0 и 133), просто добавьте делать во время цикла:

do{ 
     randomNum=generator.nextInt(133); 
    }while(randomNum>33 &&randomNum<120); 
Смежные вопросы