2016-10-21 4 views
0

Ich versuche, einige Daten von einem Benutzer zu sammeln und es mit der Benutzereingabe anzuzeigen. das Beispiel war ich geben ist:Randomize Benutzereingabe basierend auf Fragen

Filename: output.txt 
number of lines: 4 
Line Length: 8 
Character Set: ABC123 

2CB3A32C 
BB13CAA3 
C3A21CB2 
CC2B13A3 

i zur Zeit der Benutzereingabe bekommen haben, aber ich weiß nicht, wie die zufälligen Buchstaben und Zahlen auf der Grundlage der eingegebenen anzuzeigen. Hier ist mein Code. Jede Hilfe wäre groß. Die Daten müssen mit Loop angezeigt werden.

public static void main(String[] args) throws IOException 
{ 
    int lineNum = 0; 
    int numChars = 0; 
    String charSet = ""; 
    String userInput = ""; 
    String filename; 

    //Creates a Scanner Object for keyboard input. 
    Scanner keyboard = new Scanner(System.in); 

    //Get the filename. 
    System.out.print("Enter a filename: "); 
    filename = keyboard.nextLine(); 

    System.out.print("Enter number of lines: "); 
    lineNum = keyboard.nextInt(); 

    if(lineNum < 1 || lineNum > 20){ 
     lineNum = 20; 
     System.out.println("Defaulting to 20 lines"); 
    } 

    System.out.print("Enter number of characters in each line: "); 
    numChars = keyboard.nextInt(); 
    keyboard.nextLine(); 

    if(numChars < 1 || numChars > 20){ 
     numChars = 20; 
     System.out.println("Defaulting to 20 characters"); 
    } 

    System.out.print("Enter character set: "); 
    charSet = keyboard.nextLine(); 

    //Put all the input together to display the results 

    PrintWriter pw = new PrintWriter(filename); 
    pw.println("\nFilename: " + filename); 
    pw.println("Number of lines: " + lineNum); 
    pw.println("Line Length: " + numChars); 
    pw.println("Character set: " + charSet); 
    pw.println("\n" + userInput); 
    pw.close(); 

    // Read the file 
    BufferedReader br = new BufferedReader(new FileReader(filename)); 
    for (String line; (line = br.readLine()) != null;) { 
     System.out.println(line); 
    } 

} 
+0

Sie können an diesem einen Blick nehmen wollen http://stackoverflow.com/questions/41107/how-to-generate-a-random-alpha -numerische Zeichenfolge? rq = 1 – Manish

Antwort

1

bereits.

Random random = new Random(); 
for (int i = 0; i < lineNum; ++i) { 
    for (int j = 0; j < numChars; ++j) 
     pw.print(charSet.charAt(random.nextInt(charSet.length()))); 
    pw.println(); 
} 
0

Werfen Sie einen Blick auf: RandomStringUtils

Diese Sie auf dem richtigen Weg helfen könnten erhalten: import org.apache.commons.lang.RandomStringUtils; System.out.println(RandomStringUtils.random(8,new char[]{'a','b','c','1', '2', '3'}));

0

Versuchen:

str.charAt(ThreadLocalRandom.current().nextInt(0, str.length())); 
0

In Java8

final int length = 8; 
final Random rand = new Random(); 
String random = IntStream.range(0, length).mapToObj(i -> str.charAt(rand.nextInt(100) % str.length()) + "").collect(Collectors.joining()); 
System.out.println(random); 

zufällige Zeichenfolge für 10 Durchläufe erzeugt

A31CCCB3 
1AC3A2CA 
BAB11B2A 
A33A1ACA 
BCCCB2AC 
331C12CA 
3CC1AAB3 
113BAABB 
1BC22B1A 
31BBCAC1 
0

Sie können die unten Utilty Klasse verwenden

import java.util.Random; 

public class RandomString { 

    private char[] symbols; 

    private final Random random = new Random(); 

    private final char[] buf; 

    public RandomString(int length ,char[] symbols) { 
    if (length < 1) 
     throw new IllegalArgumentException("length < 1: " + length); 
    buf = new char[length]; 
    this.symbols = symbols; 
    } 

    public String nextString() { 
    for (int idx = 0; idx < buf.length; ++idx) 
     buf[idx] = symbols[random.nextInt(symbols.length)]; 
    return new String(buf); 
    } 
} 

Um es von Ihrem Haupt verwenden,

RandomString randString = new RandomString(numChars ,charSet.toCharArray()); 
     for (int i = 0; i < lineNum; i++) { 
      System.out.println("" +randString.nextString()); 
     } 
Verwandte Themen