2014-09-09 4 views
1

Как создать случайную строку из этих 4 строк? Мне нужно взять только 2 строки оттуда. Я пытался сделать что-то подобное, но он не работает.Создать случайную строку

String RandomMessages[] = 
    { 
      "Message 1 (Change this)", 
      "Message 2", 
      "LOL", 
      "fdasfsd" 
    }; 
public static void main(String[] args) { 
     System.out.println(RandomMessage[]); 
} 
+0

генерировать 2 случайное взаимодействие между 0-3 и выбором двух ied form your array –

+0

Можете ли вы привести примеры ожидаемого результата? Я не понимаю «случайную строку из этих 4 строк. НО мне нужно взять только 2 строки оттуда». –

+0

В результате я ожидаю: «LOLfdasfsd». Он добавит 3 и 4 строки. – Tadas

ответ

0
 //Please note - you will need to import java.util.Random; 

     String[] randomMessages = new String[]{ 
        "Message 1 (Change this)", 
        "Message 2", 
        "LOL", 
        "fdasfsd" 
      }; 

     Random randomGenerator = new Random(); 
     int i = randomGenerator.nextInt(randomMessages.length); 

     String s = randomMessages[i]; 

     int oldi = i; 

     Random randomGenerator2 = new Random(); 
     i = randomGenerator2.nextInt(randomMessages.length); 

     //Loop until we have a different index. 
     while (i = oldi) { 
      i = randomGenerator2.nextInt(randomMessages.length); 
     } 

     s = s + randomMessages[i]; 

     System.out.println(s); 

     //Alternative suggestion from Richard Le Mesurier - using Collections.shuffle 
     List list = Arrays.asList(randomMessages); 
     Collections.shuffle(list); 
     String s2 = list.get(0).toString() + list.get(1).toString(); 

     System.out.println(s2); 
+1

предложение, замените 'nextInt (3)' на nextInt (RandomMessages.length), не требуется изменение, если размер массива изменяется – user902383

+0

Большое спасибо :) – Tadas

+0

@ user902383 Отличное предложение, спасибо. – Donal

-5

Это работающий алгоритм с некоторыми свойствами, которые можно выбрать, без двуличности и с любым размером ввода.

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.Random; 

public class JavaApplication191 { 
    public static String randomMessages[] 
      = { 
       "Message 1 (Change this)", 
       "Message 2", 
       "LOL", 
       "fdasfsd" 
      }; 

    public static void main(String[] args) { 
     int howManyWords = 2; //this is how many words you want in your output 
     List<String> listOfWords = new ArrayList<>(); //here you create new list 
     Random randomGenerator = new Random(); //this is randomGenerator, it helps you generate random numbers 
     listOfWords.addAll(Arrays.asList(randomMessages)); //You can use listOfWords.add("LOL") to add new property, or you can add array like this 
     List<String> selectedRandomMessages = new ArrayList<>(); //here I put output 
     for (int i = 0; i < howManyWords; i++) { 
      int randomNumber = randomGenerator.nextInt(listOfWords.size()); //I generate random number from 0 to size of list -1 
      String randomItem = listOfWords.get(randomNumber); //here I select string by index I generated 
      selectedRandomMessages.add(randomItem); //now I add this word into my output list 
      listOfWords.remove(randomItem); //and I remove this item from input list, so I do not get any duplicities 
     }   
     System.out.println(selectedRandomMessages); 
    } 
} 

выход Образец:

[Message 2, LOL] 
+0

Решение должно выбрать хорошие вопросы для ответа, которые не собираются закрывать и помечать/голосовать закройте плохие вопросы :) – Flexo

2

Вы можете сделать это так же

List<String> list = Arrays.asList(RandomMessages); 
Collections.shuffle(list); 
StringBuilder builder = new StringBuilder(); 
builder.append(list.get(0)+" , "+list.get(1)); 
System.out.println(builder.toString()); 

Это должно дать вам comination двух строк выбраны случайно

+0

Мне нравится элегантность 'shuffle()' для этих вещей. Слишком плохо, что никто не знает об этом - слишком часто вы видите код, пытающийся осуществить тасование с нуля. –

+0

@RichardLeMesurier - одна из лучших пешек King Java – SparkOn

Смежные вопросы