array; daten aus txt auslesen

ensi_92

Mitglied
Hey Leute,

ich hab wiedereinmal ein problem.....

die angabe zu dem beispiel lautet folgendermaßen:

Bildschirmausgabe eines Spielfelds:
1 2 3 4 5 6 7 8 9 10 11 12
1 . . . . . . . . . . . .
2 . . . o . . . X X X . .
3 . . o o o . . . . . . .
4 . . o o o . . . . . . .
5 . X . o . . . . . . . .
6 . X . . . X X X . . . .

Die Vorgabedateien haben folgenden Aufbau:
6 ROWS
12 COLUMS
8 ISLANDS 2 4 3 3 3 4 3 5 4 3 4 4 4 5 5 4
8 SHIPS 5 2 6 2 2 8 2 9 2 10 6 6 6 7 6 8
Die ersten beiden Zeilen bestimmen die Spielfeldgröße, Zeile 1 die Anzahl der Zeilen, Zeile 2 die Anzahl der Spalten. Dann kommt die Anzahl der Inselzellen, gefolgt von deren Zeile/Spalte-Koordinaten. In der letzten Zeile folgen die Schiffzellen, im gleichen Format wie die Inseln. Beachten Sie, dass die Koordinaten 1-basiert angegeben sind. Hinweis: die Reihenfolge der Eingabedaten in der Datei ist immer gleich, die Wörter ROWS, COLUMNS, ISLANDS, SHIPS dienen lediglich der Lesbarkeit und können beim Verarbeiten überlesen werden.
Hinweis:
Strukturieren Sie das Programms durch Aufteilen in Methoden und vermeiden Sie Codedopplung.
Schreiben Sie eine main-Methode, die beide Spielfelder in einem Programmlauf ausgibt, d. h. für Player1.txt und Player2.txt.

und das problem is jetzt dass ich keine Packeges oder ähnliches und nur die einfachsten Befehle verwenden darf

das was ich auf die reihe bekommen habe ist folgendes:

Java:
class Table {
	public static void main(String[] args){
		In.open("Player1.txt");
			while(In.done()){
				int rowLength = In.readInt();
				In.readWord();
				int columLength = In.readInt();
				In.readLine();
				char[][] array = new char[rowLength] [columLength)];
				
			}
		In.close();
	}
	public static void calculation(int calc){
		
	}
	
	public static void sings(int j){
		for(int i = 1; i <= j; i++){
		Out.print(".");
		}
	}
	public static void island(int k){
		for(int l = 1; l <= k; l++){
		Out.print("O");		
		}
	}
	public static void ship(int m){
		for(int n = 1; n <= m; n++){
		Out.print("X");
		}
	}
}

wenn wer eine idee hat bitte bald melden weil ich es bald abgeben muss.

liebe Grüße
 
und das problem is jetzt dass ich keine Packeges oder ähnliches und nur die einfachsten Befehle verwenden darf
Heißt bzw. was verstehst Du unter "Packages oder ähnliches verwenden"? Auf jeden Fall nutzt Du ja bereits ein externes Package, das die Klasse In anbietet.
Ausserdem sehe ich jetzt kein Problem, ausser dass Du nicht weißt Du weitermachen sollst.
Allgemein unschön sind die statischen Methoden. Die Methoden sings, ship und island sind fragwürdig, da ein Element ja immer nur 1x1 gross ist.
Der Ansatz mit dem char[][] ist ein möglicher Weg, jetzt musst Du eben "nur noch" die Datei weiter auslesen, auswerten und die Werte im char Array setzen.
 
ich hab mich komisch ausgedrückt sry.....

ich meinte so sachen wie:

package com.acme;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


und du hast auch recht dass ich nicht weiter weiß wie ich zum beispiel die 2., 3., 4., Zeile einlesen soll.... denn mit int columLength = In.readInt(); funktioniert das nicht .....

mein zweites problem ist es auch dass ich nicht weiß wie ich die skalen des Spielfeldes in das array zuweisen/einlesen soll, denn die spielfelder von Player1 und Player2 sind unterschiedlich groß...

ich steh irgendwie auf der Leitung.....
 
In Zeile 9 liest Du ja bereits die Zeile mit den ISLANDS aus, die musst Du
1. in einer Variablen speichern
2. weiter verarbeiten um an die Koordinaten der Inseln zu kommen.
3. genauso mit der folgenden Zeilen für SHIPS

Wenn Du mit dem char Array für Dein Spielfeld arbeiten willst kannst Du das ja gleich alle Felder mit "." intialisieren und dann nur die Felder für SHIPS und ISLANDS ändern.

Wenn daraus mal ein Schiffe versenken auf Konsole werden sollte, dann würde ich mich mal mit der objektorientierten Programmierung anfreunden und von den ganzen statischen Methoden abkommen.
 
so das is alles was ich noch zusammengebracht habe...... aber jetzt weiß ich aber wirklich nicht mehr weiter.....


Java:
class Table {
	public static void main(String[] args){
		In.open("Player1.txt");
		In.close();
		In.open("Player2.txt");
		In.close();
	}
	public static void calculation (int calc){
		while(In.done()){
				int rowLength = In.readInt();
				int columLength = In.readInt();
				int shipNumberOfPoints = In.readInt();
				In.readWord();
				int shipX = In.readInt();
				int shipY = In.readInt();
				int islandNumberOfPoints = In.readInt();
				In.readWord();
				int islandX = In.readInt();
				int islandY = In.readInt();
				char[][] array = new char[rowLength] [columLength];

				
				for(int i = 1; i <= rowLength*columLength; i+2){
				Out.print(".");
				}
			}
	}
	
	public static void island(int k){
		for(int l = 1; l <= k; l++){
		Out.print("O");		
		}
	}
	public static void ship(int m){
		for(int n = 1; n <= m; n++){
		Out.print("X");
		}
	}
}
 
Lieber qwertzzuu!

Ich weiß nicht wer du bist oder warum du programmieren gut kannst.....

Aber eines weiß ich, ich kann das programmieren nicht und versuche es mit eurer Hilfe zu lernen, da mir das bereitgestellte Material und Erklährungen von der Uni nicht reichen oder ich sie erst gar nicht verstehe.

Und wenn dann so Komentare wie von dir kommen, ich solle mir doch das objekt-orientierte Programmieren aneignen, dann hab ich damit ein großes Problem! Wie und von wo soll ich mir das bitte aneignen? Und um eines klar zu stellen: Ich muss in diesen static ..... programmieren sont bekommen ich Punkteabzug!

Denn das Bolggen in diesem Forum ist für mich die letzte Chance etwas zu verstehen und diese Vorlesung vielleicht positiv abzuschließen.

Also wenn du keine besseren Meldungen oder Vorschläge zur Verbesserung meines Programms hast, dann erspare sie mir!

Mit freundlichen Grüßen

und in der Hoffnung, dass du dir das oben gesagte zu Herzen nimmst

verbleibe ich

ensi_92
 

Zurück
Oben