Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Java » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Java
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
iko
Grünschnabel


Dabei seit: 30.08.2007
Beiträge: 7

Java Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo, möchte folgende aufgabe lösen:

Zitat:
Schreiben sie eine Applikation die
- 1000 ganzzahlige Zufallszahlen zwischen 0 und 100 erzeugt und diese untereinander in eine datei schreibt
-aus dieser erzeugten datei die zahlen ausliest, den durchschnitt berechnet und diesen wert ausgibt


hab die zahlenwerte erstmal verändert damit ich alles im überblick hab, was alles geschieht.
komm nun aber nich mehr weiter.

Zitat:

import java.io.*;
public class Zufall{
public static void main(String args[])throws java.io.IOException{
int zufallsZahl;
String s;
int d=0;

PrintWriter schreiben = new PrintWriter(new FileWriter("Zufallszahlen.txt"));
for (int i=0;i<5;i++){
zufallsZahl = (int)(Math.random()*101);
schreiben.println(zufallsZahl);
}
schreiben.flush();
schreiben.close();

BufferedReader einlesen = new BufferedReader(new FileReader("Zufallszahlen.txt"));



while ((s = einlesen.readLine()) != null){
System.out.println(s);
d++;
}

for (int p=0; (s = einlesen.readLine()) != null;p++){
int tor [] = new int [d];
tor[p]=Integer.parseInt(s);
System.out.println("2. "+s);


}



einlesen.close();
System.exit(0);

}
}



Kann mir jmd sagen, warum die letzte for-schleife nicht funktioniert?
Bekomme nich die gewünschte ausgabe....



Gruß
iko

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von iko: 30.08.2007 16:49.

30.08.2007 16:48 iko ist offline E-Mail an iko senden Beiträge von iko suchen Nehmen Sie iko in Ihre Freundesliste auf
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich seh da einige Fehler.

Erstmal solltest du besser die Random-Klasse von Java benutzen. Dann kannst du 100 Zufallszahlen so erstellen:

code:
1:
2:
3:
4:
5:
6:
Random rnd = new Random();

// Zufallszahl zwischen 1 und 100
int rndNmbr = rnd.nextInt(100) + 1;



Beim Einlesen der Datei benutzt du zuerst eine While-Schleife um die Zeilen zu zählen und danach eine For-Schleife. Das "einlesen" zeigt aber nach der While-Schleife bereits auf das Ende der Datei, weswegen die For-Schleife danach nicht mehr durchlaufen wird. Außerdem legst du in der for-schleife in jeder Iteration das Array "tor" neu an. Richtig wäre es, vor der for-Schleife das Array einmal anzulegen.

Noch besser ist es, zum Abspeichern der Int-Werte eine verkettete Liste zu verwenden. So brauchst du die Größe der Datei garnicht kennen.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
BufferedReader einlesen = new BufferedReader(new FileReader("Zufallszahlen.txt"));

LinkedList<Integer> linkedList = new LinkedList<Integer>();

while ((s = einlesen.readLine()) != null){

   try {
      int val = Integer.parseInt(s);
   } catch (NumberFormatException e) {
      System.out.println("Fehler: " + e);
      return;
   }

   linkedList.put(new Integer(val));
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tobias: 30.08.2007 17:41.

30.08.2007 17:39 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
iko
Grünschnabel


Dabei seit: 30.08.2007
Beiträge: 7

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ja danke... kam gerade selber drauf mit den dynamischen datenstrukturen und hab ein Vector benutzt.

so funkts auch wunderbar...

Zitat:
import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

public class Zufall{
public static void main(String args[])throws java.io.IOException{
int zufallsZahl;
String s;
int gesamt=0;

PrintWriter schreiben = new PrintWriter(new FileWriter("Zufallszahlen.txt"));
for (int i=0;i<1000;i++){
zufallsZahl = (int)(Math.random()*101);
schreiben.println(zufallsZahl);
}
schreiben.flush();
schreiben.close();

BufferedReader einlesen = new BufferedReader(new FileReader("Zufallszahlen.txt"));


Vector<String> v = new Vector <String>();

while ((s = einlesen.readLine()) != null){
v.add(s);
}
einlesen.close();

for (int i=0;i<v.size();i++){
gesamt = gesamt + Integer.parseInt(v.get(i));
}

double durchschnitt= ((double)gesamt)/(v.size());

JOptionPane.showMessageDialog(null,"Der Durchschnitt beträgt: "+durchschnitt);

System.exit(0);

}
}



könnte man das ganze auch kürzer gestalten und trotzdem zum ziel kommen???
30.08.2007 17:46 iko ist offline E-Mail an iko senden Beiträge von iko suchen Nehmen Sie iko in Ihre Freundesliste auf
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn du nur den Durchschnitt haben willst, dann brauchst du keine dynamische Datenstruktur.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
BufferedReader einlesen = new BufferedReader(new FileReader("Zufallszahlen.txt"));

int sum = 0;
int count = 0;

while ((s = einlesen.readLine()) != null){
   sum += Integer.parseInt(s);
   count++;
}

System.out.println("Durchschnitt: " + ((double)sum /count ) )
30.08.2007 19:02 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Java