2016-02-05 4 views
-2

Я хочу, чтобы ввести строку "abcde12345ABCDE" с помощью сканера, а затем сгенерировать случайную строку длиной 4 со следующими требованиями:Генерация случайной строки из другой строки

  • первое место должно быть персонаж
  • второй место должно быть число
  • третье место должно быть числом
  • на 4-м месте, он также должен быть характер

Пример запуска:

Input 
abcde12345ABCDE 

\\Processing.... 
Output 
A25b 

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

Plz enter the generated no.!! 
A25b 

Вот код, который я использовал для создания случайной строки

final String alphanumeric = "abcde12345ABCDE"; 
final int n = alphanumeric.length(); 
Random r = new Random(); 
for(int i = 0; i < 4; i++) { 
    System.out.println(alphanumeric.charAt(r.nextInt(n))); 
} 
+0

Пожалуйста уточюните ваш вопрос - пример вы дали довольно запутанный. Кроме того, пожалуйста, поделитесь кодом, который вы уже пробовали, чтобы решить эту проблему, и укажите, где у вас возникла проблема. – Krease

+0

Конечная строка = "abcde12345ABCDE"; final int n = буквенно-цифровой. Длина(); random r = new random(); (int i = 0; i <4; i ++) {System.out.println (буквенно-цифровой) Charar (r.nextint (n)));}}} ... –

+0

Это результат aBe1 ..... Но я хочу, чтобы его выход должен быть a25D означает на первом месте он должен мне письмо, на втором и третьем месте он должен быть числом, а на четвертом месте должно быть письмо ....... и после этого подтвердить сгенерированный номер, например, подтвердить пароль –

ответ

0
public static void main(String[] args) { 
    final String alphanumeric = "abcde12345ABCDE"; 
    List<Character> digits = getPart(alphanumeric, true); 
    List<Character> letters = getPart(alphanumeric, false); 

    Random r = new Random(); 
    System.out.print(letters.get(r.nextInt(letters.size()))); 
    System.out.print(digits.get(r.nextInt(digits.size()))); 
    System.out.print(digits.get(r.nextInt(digits.size()))); 
    System.out.print(letters.get(r.nextInt(letters.size()))); 
} 

public static List<Character> getPart(String src, boolean numbers) { 
    List<Character> result = new ArrayList<>(); 
    for (int i = 0; i < src.length(); i++) { 
     if (numbers == Character.isDigit(src.charAt(i))) { 
      result.add(src.charAt(i)); 
     } 
    } 
    return result; 
} 
Смежные вопросы