2016-07-12 39 views
-2

Wenn Sie also eine for-Schleife innerhalb einer for-Schleife verwenden, können Sie ein Rechteck ausgeben, da wir Zeilen und Spalten haben.Wie druckt man entweder ein A-, B- oder ein * -Zeichen in einer Zeile * Spaltenrechteck nur einen bestimmten Prozentsatz einer Zeit?

Zum Beispiel

int rows = 5; 
    int cols = 5; 
    double rand = Math.random() * 100; 

    for (int i = 0; i < rows; i++) { 
    for (int j = 0; j < cols; j++) { 
     System.out.print("*"); 
    } 
    System.out.println(" "); 
    } 

die auszugebende

***** 
***** 
***** 
***** 
***** 

Wie funktioniert ein Druck ein Zeichen, dass ein Sternchen statt, wir das Sternchen ersetzt entweder durch einen Buchstaben A werden müssen können, B oder ein Sternchen (""). Um es noch schwieriger zu machen, sagen wir die Wahrscheinlichkeit, dass für den Stern, dass es einen Buchstaben "A" in 60% der Zeit gibt, der Buchstabe B, 30% der Zeit und die "" nur 10% der ganzen Zeit?

Ich dachte, vielleicht so etwas. Ist meine Logik richtig, was kann ich tun dies

 double rand = Math.random() * 100; 

     if (rand < 30) { 
      System.out.print("C"); 
     } 
     if (rand < 10 && rand > 0) { 
      System.out.print("H"); 
     } 
     if (rand < 60 && rand > 0) 

Antwort

0

?: sich ändern würde ich sagen, Sie auf dem richtigen Weg sind, aber Sie die geringste Bedingung zuerst testen sollte (weil 10 auch kleiner als 30) und sollten Sie else verwenden. Etwas wie

double rand = Math.random() * 100; 
if (rand < 10) { 
    System.out.print("*"); // <-- 10 percent of the time 
} else if (rand < 40) { // <-- 10 + 30 = 40 
    System.out.print("B"); // <-- 30 percent of the time. 
} else { 
    System.out.print("A"); // <-- 100 - 40 = 60 
}