# Java Datei und Math.random (Anfänger)



## anfänger2012 (24. Nov 2011)

Hallo,

ich habe die folgende aufgabe bekommen :

WriteNumbers.java Schreiben Sie ein Java-Programm, das 20 Zufallszahlen zwischen 0 und
9 in eine Datei namens 20numbers.txt schreibt. In der Datei soll je eine Zahl pro Zeile stehen.
Zusätzlich soll das Programm die Summe der geschriebenen Zahlen am Bildschirm ausgeben,
also beispielsweise:
Kontrollsumme: 87

Überprüfen Sie Ihr Programm, indem Sie sich den Inhalt der Datei mit einem Editor anzeigen
lassen. Verwenden Sie zum Erzeugen der Zufallszahlen die Methode double Math.random()
der Java-Klassenbibliothek. Sie liefert einen Wert aus dem Intervall [0;1); dieser kann mittels
(int) (Math.random() * 10) in die gewünschte Zufallszahl umgewandelt werden.


*Aber leider kann ich das nicht  ???:L
Mein Hauptprobelm ist, dass ich nicht weiß wie ich die 
Zufallszahlen in eine datei reinschreiben lasse....

Also ich habe es zwar versucht und das kam bei mir raus :
*



```
class WriteNumbers {
  
  public static void main(String[] args) {
  
    In.open("20Numbers"); 
   int zufallszahl =(int)(Math.random()*20);
	
	
	

  }
```


----------



## Xeonkryptos (24. Nov 2011)

Für das Beschreiben von Dateien bedarf es schon etwas mehr vorwissen. Du musst mit Streams arbeiten, um die Aufgabe zu erfüllen.

Ich schmeiße einfach mal die Klassen in den Raum. [JAPI]BufferedReader[/JAPI][JAPI]BufferedWriter[/JAPI][JAPI]FileWriter[/JAPI][JAPI]FileReader[/JAPI][JAPI]File[/JAPI]

Das sind in etwa alle Klassen, die du benötigst. Natürlich gehen auch andere Klassen, aber damit ist es wohl am einfachsten.


----------



## anfänger2012 (24. Nov 2011)

hallo,

danke dir schonmal für deine antwort...

aber ich denke mal ich darf die klassen nicht benutzen , da wir die nicht
hatten....

bisher haben wir nur mit Out.class und In.class gearbeitet ....

würde es mit den klassen die uns unsere professoren gegeben hat nicht gehen ??


....


----------



## Xeonkryptos (24. Nov 2011)

Kann ich dir nicht sagen, da ich die Klassen nicht sehe... Die Klassen sind nicht in der Java-API und ich kann nur mit der API von Sun/Oracle arbeiten!

Wenn du den Code deiner Profs postet, kann ich es eher auf dein Prob beurteilen.


----------



## anfänger2012 (24. Nov 2011)

würden wir aber jetzt davon ausgehen, dass es jetzt richtig ist...
wie müsste ich dann fortfahren ???

also ich habe schonmal eine leere 20numbers text datei erstellt.....

muss ich in diese leere datei auch etwas schreiben ??

wie gesagt ich habe leider kein plan von "dateien"....


----------



## Xeonkryptos (24. Nov 2011)

anfänger2012 hat gesagt.:


> WriteNumbers.java Schreiben Sie ein Java-Programm, das 20 Zufallszahlen zwischen 0 und 9 in eine Datei namens 20numbers.txt schreibt.



Das sollte wohl deine Frage beantworten.


----------



## anfänger2012 (24. Nov 2011)

aber die java datei muss doch in die leere datei reinschreiben und nicht ich ...


----------



## Xeonkryptos (24. Nov 2011)

Das kann auch der Java-Code, sofern er mit diversen Streams arbeitet und da du wohl den Code deiner Profs nicht weitergeben darfst oder veröffentlichen, musst du selbst schauen wie du weiterkommst, da ich den Code nicht kenne und daher nicht weiß, was kann man nutzen und was nicht!


----------



## anfänger2012 (24. Nov 2011)

wie kann ich denn die out.class datei code zeigen ??? soll ich die mit editor öffnen ??

dann bekomme ich nur sowas 

Êþº¾   1 h
 # A	 " B	 " C
  D
  E
  F
  G
  H
  I
  J
  K
  L
  M
  N
  O
  P
  Q
  R
  S
  T
  U
  V
  W X Y
  Z
  [	 " \	 " ] ^
  _
  `	 a C b c out Ljava/io/PrintStream; stack [Ljava/io/PrintStream; sp I done Z <init> ()V Code LineNumberTable ()Z print (Z)V (C)V (I)V (J)V (F)V (D)V ([C)V (Ljava/lang/StringV (Ljava/lang/ObjectV println open close <clinit> 
SourceFile Out.java , - * + $ % d 0 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 : ; - ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; : java/io/PrintStream java/io/FileOutputStream , 9 , e & ' ( ) java/lang/Exception f - = - g Out java/lang/Object 
checkError (Ljava/io/OutputStreamV flush java/lang/System ! " #    
 $ %   
 & '   
 ( )   
 * +     , -  .        *· ±    /        	 * 0  .   -      ² ™ ² ¶ š § ¬    /       ' 	 1 2  .         ² ¶ ±    /       + 	 1 3  .         ² ¶ ±    /       . 	 1 4  .         ² ¶ ±    /       1 	 1 5  .         ² ¶ ±    /       4 	 1 6  .         ² "¶ 	±    /       7 	 1 7  .         ² &¶ 
±    /       : 	 1 8  .         ² *¶ ±    /       = 	 1 9  .         ² *¶ ±    /       @ 	 1 :  .         ² *¶ 
±    /       C 	 ; -  .         ² ¶ ±    /       G 	 ; 2  .         ² ¶ ±    /       J 	 ; 3  .         ² ¶ ±    /       M 	 ; 4  .         ² ¶ ±    /       P 	 ; 5  .         ² ¶ ±    /       S 	 ; 6  .         ² "¶ ±    /       V 	 ; 7  .         ² &¶ ±    /       Y 	 ; 8  .         ² *¶ ±    /       \ 	 ; 9  .         ² *¶ ±    /       _ 	 ; :  .         ² *¶ ±    /       c 	 < 9  .   e     -» Y» Y*· · L² ² Y`³ ² S+³ § L³ ±    $ '   /       j  k   l $ o ' m ( n , p 	 = -  .   G      #² ¶ ² ¶  ² ž ² ² dY³ 2³ ±    /       u  v  w " x  > -  .   ?      ³ ² !³ ½ ³ ³ ±    /       {  | 
 }  ~    ?    @


----------



## Xeonkryptos (24. Nov 2011)

Du musst doch irgendwoher wissen, welche Methoden in der Klasse vorhanden sind?

Außerdem kannst du das nicht so einfach öffnen, du müsstest es erst dekompilieren, denn du hast gerade den bytecode gepostet, aber der hilft halt nicht viel.  Wenn du keine .java-Datei hast müsstest du es wie gesagt erst dekompilieren.


----------



## timbeau (24. Nov 2011)

Uni, Schule? .class-Dateien sind für dich nicht interressant, das ist kompilierter Java-Code, den liest nicht du sondern dein PC. 

Java -> erzeugt Zufallszahlen -> schreibt Datei.

Besorg dir Eclipse und dann bindest du die Out.class mit ein und dann zeigt dir Eclipse welche Methoden Out hat.


----------



## anfänger2012 (24. Nov 2011)

leider hatte ich sowas noch nicht......
aber könnten wir denn nicht einfach davon ausgehen , dass man es mit dieser Out.class kann ??


----------



## Xeonkryptos (24. Nov 2011)

Können wir, wenn wir den Inhalt der Out.class kennen! Da wir dies nicht tuen, solltest dir den Ratschlag von timbeau zu Herzen nehmen und Eclipse anfangen zu verwenden, wodurch du den Inhalt dann posten kannst und wir dir helfen, dein Problem MIT den Klassen zu lösen!


----------



## Andi_CH (25. Nov 2011)

Die Klassen in.java und out.java findet man z.B. hier (Als java, class und (man staune) als html ;-) )

Ich weiss nicht welche Idi*Selbstzensur* von Lehrpersonen "non standards" verwenden ...

Man kann ja nur hoffen, dass ihr dieselben in und out Klassen verwendet.

Hier hast du ein funktionierendes Hauptprogramm, das du nur noch punktuell ausfüllen muss.

Na ja, die sysout halt vielleicht durch eure super secret out.xxx ersetzen


```
class WriteNumbers {

	//TODO hier eine File-Variable deklarieren

	public static void init(String filename) {
		//TODO File öffnen und Filevariable setzen
	}

	private static int generiereZufallszahl() {
		return (int) (Math.random() * 10);
	}

	private static void schreibeZahlInFile(int zahl) {
		//TODO Filevariable benutzen und schreiben
		System.out.println(zahl);
	}

	public static void main(String[] args) {
		init("20numbers.txt");
		int summe = 0;
		for (int i=0; i<20; i++) {
			int zufallszahl = generiereZufallszahl();
			summe += zufallszahl;
			schreibeZahlInFile(zufallszahl);
		}
		System.out.println("Kontrollsumme: " + summe);
	} 
}
```


EDIT: Ich stelle gerade fest, dass du mit eurem ach so tollen out gar keine Filevariable braucht (wenn es denn dasselbe out ist, das ich gefunden habe - da leitet man einfach den output um)

EDIT2: Ich habe die Klassen geholt und etwas umformatiert - die werden demnächst (ich habe es versehentlich im falschen Bereich gepostet um darum gebeten dass es verschoben wird) unter Codeschnipsel und  Projekte zu finden sein.


----------

