2016-04-17 7 views
0

Ich habe 8 Namen in meiner Datei und jede einzelne Zeile hat nur einen Namen. Ich versuche einen Namen mit Zufall zu schreiben. Ich habe einige Codes geschrieben, aber ich weiß nicht, wie ich weitermachen werde (ich versuche, dieses Problem zu lösen, ohne Array zu verwenden, weil wir es noch nicht gelernt haben). Meine Liste hat diese Namen;um einen zufälligen Namen zu schreiben

patrica 
natascha 
lena 
sara 
rosa 
kate 
funny 
ying 

, und ich will mit system.out.println nur einen Namen schreiben, mit zufälligen

Hier ist mein Code

BufferedReader inputCurrent = new BufferedReader(new FileReader("aText.txt")); 

    String str; 
    int rowcounter =0; 
    int mixNum =0; 
    String strMixNum=null; 
    while((str = inputCurrent.readLine())!= null){ 
     rowcounter++; 
     mixNum = rnd.nextInt(rowcounter)+1; 
     //strMixNum = ""+strMixNum; 

     String str2; 
     while((str2 = inputCurrent.readLine())!= null){ 
      // i dont know what i s shall write here 
      System.out.println(str2); 
     } 
    } 

    inputCurrent.close(); 

Antwort

4

Da Sie nicht über Arrays oder Listen noch gelernt haben, können Sie Finde heraus, welches Zahlenwort du vorne haben willst, und hör auf, die Datei zu lesen, wenn du da bist.

Also, wenn Sie wissen, dass Sie 8 Wörter haben, tun Sie dies:

int wordToGet = rnd.nextInt(8); // returns 0-7 
while ((str = inputCurrent.readLine()) != null) { 
    if (wordToGet == 0) 
     break; // found word 
    wordToGet--; 
} 
System.out.println(str); // prints null if file didn't have enough words 

Sobald Sie die Tricks von Java lernen, können Sie diesen Code kollabieren, obwohl es für die Leser weniger klar wird, so dass Sie wahrscheinlich sollte es auf diese Weise nicht tun:

int wordToGet = rnd.nextInt(8); 
while ((str = inputCurrent.readLine()) != null && wordToGet-- > 0); 
System.out.println(str); 
+0

Sehr nett, ich mag die Kommentare. – nhouser9

+0

@LenaMonikaMarshall gibt es keine Möglichkeit, das direkt zu tun. Sie müssen über die Datei laufen und die Zeilen zählen. Ihr bestes Beispiel wäre es, den Prozess des Lesens und Zählens auf 'java.nio.file.Files # readAllLines' zu belassen, obwohl das etwas über Ihrem Niveau liegt, denke ich. – Paul

2

Sie einfach alle Namen lesen, speichern sie in einer Liste und dann wählen Sie einen Index zufällig:

List<String> names = Files.readAllLines(Paths.get("aText.txt")); 
// pick a name randomly: 
int randomIndex = new Random().nextInt(names.size()); 
String randomName = names.get(randomIndex); 
System.out.println(randomName); 
+0

i für Ihre Antwort zu schätzen wissen, aber ich bin ein Anfänger, und ich verstehe nicht, so viel Code:/was es Liste macht ? –

+0

Korrekte Antwort im Allgemeinen, aber wenn OP Arrays noch nicht gelernt hat, hat sie wahrscheinlich auch nichts über Sammlungen gelernt, also keine gültige Antwort für die Ebene des Fragestellers. – Andreas

Verwandte Themen