2017-02-27 3 views
0

Ich bekomme einen logischen Fehler jedes Mal, wenn ich dieses Programm ausführen, ich fühle mich wie der Code unten genau tun sollte, was die Frage will, aber die Ausgabe ist definitiv falsch. Ich sehe nicht, was ich falsch mache.Generieren von Zufallszahlen innerhalb mehrerer verschiedener Parameter

Schreiben Sie ein Java-Programm (nennen Sie es RandomNumbers), die Zufallszahlen wie folgt generiert. Stellen Sie sicher, dass Sie Ihren Ausgang für jeden darunter liegenden Teil richtig beschriften und die Ausgänge in separaten Zeilen drucken. Verwenden Sie wie im vorherigen Programm das Tab-Escape-Zeichen, um die Ausgaben nach den Beschriftungen auszurichten. a) Eine zufällige ganze Zahl zwischen 30 und 50 (inklusive). b) Eine zufällige ganze Zahl zwischen 20 und -20 (inklusive). c) Eine zufällige ganze Zahl zwischen -20 und -60 (inklusive). d) Eine zufällige Gleitkommazahl zwischen 0.0 und 15.9999 (inklusive).

Dies ist, was ich bisher:

public class RandomNumbers{ 

public static void main(String[] args) { 

    // Part A) Generate a random integer number between 30 and 50 (inclusive) 
    System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
      30 + (int)(Math.random() * ((50 - 30) + 1))); 
    // Part B) Generate a random integer number between 20 and -20 (inclusive) 
    System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
      (-20) + (int)(Math.random() * ((20 - (-20)) + 1))); 
    // Part C) Generate a random integer number between -20 and -60 (inclusive) 
    System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
      (-60) + (int)(Math.random() * (((-20) - (-60)) + 1))); 
    // Part d) Generate a random floating-point number between 0.0 and 15.9999 (inclusive) 
    System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
      0.0 + (double)(Math.random() * ((15.9999 - 0.0) + 1))); 
}} 

Meine Ausgabe ist: a) Zufallszahl zwischen 30 und 50 (einschließlich): 3018 a) Zufallszahl zwischen 30 und 50 (inklusive): - 207 a) Zufällige ganze Zahl zwischen 30 und 50 (einschließlich): -6014 a) Zufällige ganze Zahl zwischen 30 und 50 (einschließlich): 0.03.7171159220482286 was nicht richtig ist, wie Sie sehen können.

+1

hinzufügen 'ich errors' - es wäre am besten, wenn Sie uns zeigen, was Sie versucht haben, und welche Fehler du hast. – Thomas

+0

Sie könnten Ihren Code kopieren und einfügen und die Parameter ersetzen. – Compass

+1

Und eine andere Universität Aufgabe ... – domsson

Antwort

1

Ihr Problem ist, dass Sie Ihre Berechnung nicht in Klammern gesetzt haben. Java wird daher die + Zeichen in Ihrem Ausdruck als String-Verkettung betrachten.

Beispiel:

System.out.println("Test"+1+2); 

druckt Test12, aber

System.out.println("Test"+(1+2)); 

druckt Test3.

Also in Ihrem ersten Beispiel erhalten Sie 3018 als Ausgabe, weil anstelle von 30 + 18 fügt einfach beide Zahlen zu Ihrem String.

So ist der richtige Code, den Sie Ihre gewünschte Ausgabe geben wird

System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
     (30 + (int)(Math.random() * ((50 - 30) + 1)))); 
+0

Sie sind richtig, vergessen Sie die Klammern zu Beginn der Berechnung. Sehr geschätzt. –

1

Sie müssen Klammern den Zusatz Ausdrücke hinzuzufügen, oder es wird concatenaded statt hinzugefügt. (Beispiel: text + 30 + 1 => text301) Im letzten Fall müssen Sie nicht 1.

public static void main(String[] args) { 

    // Part A) Generate a random integer number between 30 and 50 (inclusive) 
    System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
      (30 + (int)(Math.random() * ((50 - 30) + 1)))); 
    // Part B) Generate a random integer number between 20 and -20 (inclusive) 
    System.out.println("a) Random integer between -20 and 20 (inclusive): " + 
      ((-20) + (int)(Math.random() * ((20 - (-20)) + 1)))); 
    // Part C) Generate a random integer number between -20 and -60 (inclusive) 
    System.out.println("a) Random integer between -20 and -60 (inclusive): " + 
      ((-60) + (int)(Math.random() * (((-20) - (-60)) + 1)))); 
    // Part d) Generate a random floating-point number between 0.0 and 15.9999 (inclusive) 
    System.out.println("a) Random integer between 0.0 and 15.9999 (inclusive): " + 
      (0.0 + (double)(Math.random() * (16))); 
} 
Verwandte Themen