Zahlenintervall

Status
Nicht offen für weitere Antworten.

paukenpaule

Mitglied
Moin!

Habe hier mal ne Frage zu absoluten Basics! Muss bis morgen eine Aufgabe lösen, allerdings habe ich nicht den blassesten Schimmer von Java, da ich ziemlich spät in den Kurs reingerutscht bin.

Es ist ne simple Aufgabe um Bibliotheksmethoden und Kommandozeilenparameter zu üben, ohne if-Befehl.
Man soll nen Programm schreiben, dem zwei double werte a und b als Kommandozeilenparam. zugewiesen werden. Dadurch sollen dann zwei Zahlen, halt a und b im Intervall [a,b] ausgespuckt werden.

Bisher habe ich das hier:

public class ZufallIntervall {


*/
public static void main(String[] args) {
// TODO Auto-generated method stub

double a,b;
a = Double.parseDouble (args[0]); //Was bedeutet das eigtl??
b = Double.parseDouble (args[0]);
a = Math.random()*10;
a = Math.round(0);
b = Math.random()*5;
b = Math.round(0);
System.out.println(); //Wie gebe ich zwei Zahlen gleichzeitig aus??




}

}

Also nehme mal an totaler bullshit. Habe halt ein bischen rumgesucht was man da alles an Befehlen gebrauchen könnte.
Als Tipp wurde die Mathbiblio Methode "double max(double a, double b);" angegeben, um das Maximum von a und b festzulegen. Allerdings tauchen dann lauter syntax fehler auf...

Hoffe ihr könnt mir nen bischen auf die Sprünge helfen.
 

AmunRa

Gesperrter Benutzer
a = Double.parseDouble (args[0]);

Das bedeutet dass er den string den du als Parameter übergibst in ein Double parst (=umwandeln)

Wie gebe ich zwei Zahlen gleichzeitig aus??
System.out.println(a+", "+b);


Diesen Satz versteh ich nicht ganz

>> Dadurch sollen dann zwei Zahlen, halt a und b im Intervall [a,b] ausgespuckt werden.

solln die Übergabeparameter die Grenzen für einen Zahlenbereich sein aus dem dann eine Zufallszahl gezogen wird ?
 
Zuletzt bearbeitet:

paukenpaule

Mitglied
Danke schonmal für die gleichzeitige Ausgabe von zwei sachen!

Ich kann selbst deine Fragen leider nicht wirklich beantworten, da ich einfach zu wenig davon verstehe.
Ich verstehe es einfach so, dass zufällige zahlen ausgegeben werden sollen, die zwischen a und b liegen...

Hab in der zwischenzeit nichts wirklich produktives hinbekommen:
public static void main(String[] args) {
// TODO Auto-generated method stub

double a = 2, b = 3;
a = Math.random()*5d;
b = Math.random()*7d;
a = Math.round(a);
b = Math.round(b);
System.out.println(a+", "+b);

}

}

Scheint aber sinnfrei zu sein, da egal wie hoch a oder b gewählt wird (zb a=5000) zahlen ausgegeben werden die zwischen 0 und 1 mit 5d oder 7d multipliziert werden. Also ist da math.random wohl der völlig falsche ansatz... Zumindest sind es schonmal zufällige Zahlen :D
 

AmunRa

Gesperrter Benutzer
Java:
class Beispiel{

public static void main(String[] args){

//speichert die zwei als Parameter übergebenen WErte in double Variablen
double a= Double.parseDouble(args[0]);
double b= Double.parseDouble(args[1]);

// wenn b kleiner als a ist werden die werte vertauscht. 
if (b<a){
double h=b;
b=a;
a=h;
}

//Die obergrenze für die Berechnung wird festgesetzt
double above=b-a;

// eine Zufallszahl wird erzeugt
double rand=Math.random()*above;

// die Untere grenze wird zur zahl hinzuadiert um den wert zwischen den zuvor eingelesen WErte zu bekommen.
rand+=a;

//Die Zahl wird ausgegeben 
System.out.println(rand);
}
 
Zuletzt bearbeitet:

paukenpaule

Mitglied
Hui, scheinst dir da ja echt was überlegt zu haben!
Habe es mal etwas umgeändert, da ich für diese Aufgabe den if-Befehl nicht nutzen darf:

Java:
public class ZufallIntervall {


	public static void main(String[] args) {

			double a,b;
				a=5;
				b=15;
			
			double h=b;
				b=a;
				a=h;
			
			double min=a-b;
			
			
			double max=b-a;
			
			
			double rand=Math.random()*max;
			
				rand+=a;
			
					System.out.println(rand);
			
			
		
	}
		


}

Würde so doch auch gehen oder? Zumindest spuckt er zufällige Zahlen zwischen zb. 5 und 15 aus, nur gerundet wäre noch schoner, math.round geht hier ja nicht oder? (ging zumindest beim test nicht).

Kannst du (oder ihr) mir diese zwei Zeile nochmal genauer erklären?
Java:
double rand=Math.random()*max;
rand+=a;
mir ist noch nicht ganz klar was hier abläuft, verstehe nur soviel, dass eine Zufällige Zahl mit der Obergrenze (habe sie mal max und min genannt statt above, damit es näher an der Aufgabe ist)multipliziert wird. Nur was genau heißt rand und rand+=a?

Gruß und schonmal besten Dank!
 

AmunRa

Gesperrter Benutzer
rand+=a ist nur die kurzschreib weise für rand= rand+a

double rand= Math.random()*max;
Math random liefert immer einen Wert zwischen 0 und 1;
da wir aber jetzt einen Wert zwischen 0 und der Zahl max möchten , müssen wir zu der Zahl noch max multiplizieren. ( wenn max fünf ist, dann gilt die kleinste Zahl die wir bekommen ist 0*5 = 0 und die größte Zufallszahl ist 1*5= 5 und damit sieht man das jede Zahl dazwischen z.B. 0.5*5 = 2.5 auch erreichbar ist. ) Die Zeile liefert einfach Zufallswerte zwischen 0 und max;

das bedeutet er nimmt den Wert von der Variable rand addiert den WErt von a hinzu und speichert das ergebnis der addition wieder in der Variablen rand.

wenn du if nicht nutzen darfst dann brauchst du diesen CodeBlock überhaupt nicht.
Java:
            double h=b;
                b=a;
                a=h;
der hätte nämlich in meinem Beispiel mit der If- Abfrage nur geschaut, dass in der Variablen a immer der kleinere Wert steht. nun da du das aber nicht überprüfen darfst mit if ( kann es dir egal sein und darfs annehmen, dass in a immer die kleinere der beiden Zahlen steht.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Sollte nicht das hier ausreichen?

(ungetestet)
Java:
double a =...
double b =...
double rand=Math.random()
double result = a*rand + b*(1-rand);
 

AmunRa

Gesperrter Benutzer
Sollte nicht das hier ausreichen?

(ungetestet)
Java:
double a =...
double b =...
double rand=Math.random()
double result = a*rand + b*(1-rand);

ja wobei was schneller oder einfacher ist kann ich nicht sagen und du brauchst auch vier zeilen so wie ich

Java:
double a=...
double b= ...
max= b-a;
rand= Math.random()*max +a;
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben