Problem mit Klausuraufgabe

Status
Nicht offen für weitere Antworten.

Zorlu81

Mitglied
Hallo Leute!

hab da ein Problem mit einer Klausur Aufgabe! und bitte um Hilfe!
ich hab schon einen Lösungsansatz, komme aber schon seit gestern abend einfach nicht weiter!

Ich weiss das das zwar jetzt nicht gerade die richtige Art ist! aber hier einmal die

1) Aufgabenstellung! + 1)Mein Lösungsansatz

Schreiben sie eine Methode zufallsArray in den unten vorgegebenen Rahmen, welche ein int-Array mit ganzzahligen Zuffalszahlen erzeugt, die alle zwischen einer vorgegebenen unteren Grenze UNTEN und einer oberen Grenze OBEN liegen. Diese beiden Grenzen und die Größe des Arrays GRÖßE werden als Parameter übergeben;
Die Methode gibt das gefüllte Array zurück. So liefert etwa der Aufruf zufallsArray(1,6,10) ein Array mit 10 zufällig gewählten Zahlen zwischen 1 u 6 (einschließlich der grenzen)

Verwenden Sie die Methode double Math.random(), die bei jedem Aufruf einen Zufallswert z liefert mit
(0.0 <= z <= 1.0) Sie können beim Programmieren der Methode davon ausgehen, dass die übergebenen Parameter plausibel sind (also unten<oben, größe>0)

Code:
int [] zufallsArray(int unten, int oben, int größe)
{
}


2) Mein Lösungsansatz ???:L

Code:
import java.lang.Math.*;

class LetzeKlausurA01d
{
 public static void main (String [] args)
 {
  	
 	System.out.println(zufallsArray(1,6,10));
    
 }

	static double [] zufallsArray(int unten, int oben,int größe)
	{
	 double [] arr = new double[größe]; 	
	 
                 for(int i=1; i<=größe; i++)
	    {
	     double tmp = (double)Math.random() * 10;
	               tmp = (int)tmp;
        
                     arr[i-1] = tmp;
                     System.out.println(arr[i-1]);
	    }
	 return arr;
	 }
 

Sky

Top Contributor
Also, deine Hausaufgaben mache ich nicht, aber ein paar kleine Fragen, die Dir evtl. weiterhelfen:

1. Frage: Warum verwendest Du kein int-Array?
2. Frage: An welcher Stelle prüfst Du auf UNTEN und OBEN ab??
3. Frage: Warum beginnst Du deine for-Schleife mit 1 und nicht mit 0?
4. Warum wird dein Rückgabewert "return arr;" nicht weiter verarbeitet, sondern die Ausgabe in der Methode durchgeführt??

So, nun viel Glück bei Deiner Aufgabe.

Grüsse, Sky
 

foobar

Top Contributor
Code:
public class LetzeKlausurA01d
{
	public static void main(String[] args)
	{
		System.out.println(randomArray(1, 6, 10));
	}

	static int[] randomArray(int min, int max, int length)
	{
		int[] arr = new int[length];
		for (int i = 0; i < length; i++)
		{
			int tmp = getRandom( max );
			while (tmp  < min)
			{
				tmp = getRandom( max );
			}
			arr[i] = tmp;
			System.out.println(arr[i]);
		}
		return arr;
	}
	
	static int getRandom(int max)
	{
		return (int)(Math.random() * max);
	}
}
 

Zorlu81

Mitglied
Also wenigstens du gibst die Mühe mir auf die Sprünge zu Helfen! jetzt schonmal DANKESCHÖN nun zu deinen Fragen, die mir evt. weiterhelfen!

zu1) ein INT Array hab ich zunächst nicht genommen, da Math.random() kein integer Wert ausgibt sondern eine fließkomazahl.
zu2) den Aufgabenteil hab ich absichtlich erstmal weggenommen, da ich lediglich erstmal mein Array füllen und das ausgeben will!
zu3) natürlich hast du recht! bei 0 sollte es schon anfangen, da ja ein Array mit em Index 0 beginnt! somit kann ich in der Zeile 22 u 23 ja das arr[i-1] ersetzen durch arr
zu4) Die Ausgabe habe in der Methode hab ich lediglich zu testzwecken da hineingebracht um zu gucken, ob das Array den auch die Werte bekommen hat!

ich bin auch schon ein Schritt weiter mit der Aufgabe! aber auch nur en kleinen! also bitte bitte weiterhelfen! =)

ich will auch ganz bestimmt nicht, dass ihr für mich die Aufgabe löst sonder mir behilflich seit!
 

Sky

Top Contributor
Also,

1) mit (int) kannst Du ein double in ein int casten
Code:
 int tmp = (int)Math.random() * 10;

2) Ok... aber schön weitermachen :)

3) Auch OK

4) Sorry, wußte nicht, dass es nur ein Test war...
 
G

Gast

Gast
Hey Sky80 + L-ectron-X + foobar + nollario!

Wollt mich mal ganz herzlich bei euch allen bedanken! Ihr wisst garnicht wie sehr ihr mir geholfen habt! hab schon ganz derbe Kopfweh von dem ganzen prog.!

wünsch euch allen einen schönen Abend!

JIPPPPPIIIII
 

Bleiglanz

Gesperrter Benutzer
oje oje oje :)

nimm lieber java.util.Random

public int nextInt(int n)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. The general contract of nextInt is that one int value in the specified range is pseudorandomly generated and returned. All n possible int values are produced with (approximately) equal probability.

Code:
   static int[] randomArray(int min, int max, int length)
   {
      int[] arr = new int[length];
      java.util.Random rnd = new java.util.Random();      
      int range = max-min;
      for (int i = 0; i < length; i++)
      {
         arr[i] = min+rnd.nextInt(range);
      }
      return arr;
   }
 

Bleiglanz

Gesperrter Benutzer
OOps sorry, hatte ich nicht gelesen
Verwenden Sie die Methode double Math.random(), die bei jedem Aufruf einen Zufallswert z liefert mit
(0.0 <= z <= 1.0) Sie können beim Programmieren der Methode davon ausgehen, dass die übergebenen Parameter plausibel sind (also unten<oben, größe>0)
Nebenbei: wieder einmal eine unsinnige Aufgabe, die verhindert, dass die Leute das Java API besser kennenlernen
 

Sky

Top Contributor
foobar hat gesagt.:
Nebenbei: wieder einmal eine unsinnige Aufgabe, die verhindert, dass die Leute das Java API besser kennenlernen
Tja, so ist das mit den Lehrern ;-)

Mein Erfahrung: Es ist (manchmal) so mit den Lehrern, da sie die API selbst nicht gut genug kennen und nur Übungsbeispiele aus irgendwelchen Büchern verwenden und nicht mehr weiter kommen, sobald es darüber hinaus geht. :wink:

Natürlich kann ich diesen konkreten Fall hier nicht bewerten, da ich den Lehrer nicht kenne...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben