Java Datei und Math.random (Anfänger)

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 :



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

  }
 

Xeonkryptos

Bekanntes Mitglied
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.
 
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

Bekanntes Mitglied
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.
 
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

Bekanntes Mitglied
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!
 
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/String;)V (Ljava/lang/Object;)V 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/OutputStream;)V 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

Bekanntes Mitglied
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

Gesperrter Benutzer
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.
 

Xeonkryptos

Bekanntes Mitglied
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

Top Contributor
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

Java:
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.
 
Zuletzt bearbeitet:

Neue Themen


Oben