C
CatLuna
Gast
Hallo,
ich habe hier eine Aufgabe und habe schon mal etwas versucht, aber komme nicht weiter. Ich würde mich freuen, wenn Ihr einen Tipp geben könntet.
Betrachten Sie die Klasse PunktInt:
Schreiben Sie eine Klasse TestFilesWithPunktInt.java
Diese Klasse entaehlt drei Klassen-Methoden. Die Methode generatePunkte hat den folgenden
Kopf:
public static PunktInt[] generatePunkte (int numberPoints, int limit)
erzeugt numberPoints PunktInt-Objekte mit Koordinaten zwischen ]-limit, limit[ und liefert sie
in ein Array zurueck. Die Methode saveAsObject speichert ein Array von PunktInt Objekten als ein
einziges Objekt in eine Datei. Die Methode saveAsPunkten speichert jedes PunktInt Objekt eines
Array von PunktInt Objekten in eine Zeile. In der main Methode speichern Sie die erzeugte
PunktInt-Objekte in eine Datei in zwei Formen: als Zahlen und das ganze Array als Objekt. Sie
werden die Klassen java.io.DataOutputStream und java.ibjectOutputStream
benutzen. Lesen Sie die PunktInt-Objekte wieder, um sicher su stellen, dass alles gut geklappt
hat.
Ein Verzeichnis zum Beispiel data fuer Dateien einlegen und in Eclipse dieses Verzeichnis waehlen
mit: Run Configurations Arguments Working Directory
Hier ist mein Versuch. Ich komme mit den Methoden nicht klar.
ich habe hier eine Aufgabe und habe schon mal etwas versucht, aber komme nicht weiter. Ich würde mich freuen, wenn Ihr einen Tipp geben könntet.
Betrachten Sie die Klasse PunktInt:
Java:
package punkt;
import java.util.Random;
public class PunktInt {
private int x;
private int y;
public PunktInt(){
this(1);
}
/**
* this constructors generate a point with random coordinates
* between ]-limit, limit[
**/
public PunktInt(int limit){
Random r = new Random();
x = r.nextInt(limit);
if (r.nextInt(2) == 0) x = -x;
y = r.nextInt(limit);
if (r.nextInt(2) == 0) y = -y;
}
@Override
public boolean equals(Object ob){
if ( ! (ob instanceof PunktInt)) return false;
PunktInt p = (PunktInt) ob; // no ClassCastException
return (x==p.x && y==p.y);
}
@Override
public String toString(){
return "( " + x + ", "+ y +")";
}
}
Schreiben Sie eine Klasse TestFilesWithPunktInt.java
Diese Klasse entaehlt drei Klassen-Methoden. Die Methode generatePunkte hat den folgenden
Kopf:
public static PunktInt[] generatePunkte (int numberPoints, int limit)
erzeugt numberPoints PunktInt-Objekte mit Koordinaten zwischen ]-limit, limit[ und liefert sie
in ein Array zurueck. Die Methode saveAsObject speichert ein Array von PunktInt Objekten als ein
einziges Objekt in eine Datei. Die Methode saveAsPunkten speichert jedes PunktInt Objekt eines
Array von PunktInt Objekten in eine Zeile. In der main Methode speichern Sie die erzeugte
PunktInt-Objekte in eine Datei in zwei Formen: als Zahlen und das ganze Array als Objekt. Sie
werden die Klassen java.io.DataOutputStream und java.ibjectOutputStream
benutzen. Lesen Sie die PunktInt-Objekte wieder, um sicher su stellen, dass alles gut geklappt
hat.
Ein Verzeichnis zum Beispiel data fuer Dateien einlegen und in Eclipse dieses Verzeichnis waehlen
mit: Run Configurations Arguments Working Directory
Hier ist mein Versuch. Ich komme mit den Methoden nicht klar.
Java:
package punkt;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class TestFileWithPunktInt {
public static PunktInt[] generatePunkte (int numberPoints, int limit) {
PunktInt[] pi = new PunktInt[](numberPoints);
return pi;
}
public static PunktInt[] saveAsPunkten(PunktInt[] punkte) {
punkte = PunktInt[];
return punkte;
}
/**
* Methode speichert PunktInt-Objekte als Objekt
*
* @param dateiName
* Name der Datei in die Daten geschrieben werden
* @throws IOException
*/
public static void speichertAlsObjekt(String dateiName) throws IOException {
// Ausgabestrom oeffnen
FileOutputStream foStream = new FileOutputStream(dateiName);
ObjectOutputStream ooStream = new ObjectOutputStream(foStream);
// Erzeugen und Schreiben von Objekten der Klasse in den Ausgabestrom
// 1. Objekt
PunktInt einObjekt = new PunktInt(4);
ooStream.writeObject(einObjekt);
System.out.println(einObjekt.toString());
// 2. Objekt
einObjekt = new PunktInt(8);
ooStream.writeObject(einObjekt);
System.out.println(einObjekt.toString());
// Ausgabestrom schliessen
ooStream.flush();
ooStream.close();
}
/**
* speichert PunktInt-Objekte als Zahlen in Datei
*
* @param args
* @throws IOException
*/
public static void speichertAlsZahlen(String dateiName, byte[] bA) throws IOException {
// Ausgabestroeme erzeugen
FileOutputStream foStream = new FileOutputStream(dateiName);
DataOutputStream doStream = new DataOutputStream(foStream);
// Schleife ueber byte-Array
for (int i = 0; i < bA.length; i++) {
doStream.write(bA[i]); // in Ausgabestrom schreiben
System.out.print(bA[i] + ", ");
}
// Ausgabestrom schliessen
doStream.close();
}
/**
* Main-Methode.
*
* @param args
* Uebergabeparameter
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// Dateiname
String dateiName = "TestPunktIntAlsObjekt";
// Methode aufrufen
speichertAlsObjekt(dateiName);
String dateiName1 = "TestPunktIntAlsZahlen";
// Methode aufrufen
speichertAlsZahlen(dateiName1, null);
}
}