IOTools.readLine

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi. programmiere gerade ein spiel und will 2 spieler zur eingabe ihrer vor und nachnamen auffordern...

was ist hieran falsch???:

Code:
// Einlesen der Spielerdaten
for( int s = 0; s < spielvonkk.spieler.length; s++)
{
System.out.println( "Spieler "+ (s + 1));
spielvonkk.spieler[ s].vorName = IOTools.readLine( "Vorname? ");
spielvonkk.spieler[ s].nachName = IOTools.readLine( "Nachname? ");
}
 
IOTools ist wohl nicht gerade eine Standardklasse, also solltest du den Code dazu besser auch posten.

Was ist denn das Problem? Gibt es einen Compile-Fehler? Gibt es einen Laufzeitfehler? Läuft das Programm durch, tut aber nicht, was es soll?
 
Das wissen wir nicht, weil IOTools keine Klasse der Java Bibliothek ist.
Wahrscheinlich tust du gut daran sie einfach zu verbrennen.
 
ERSTMAL: SORRY FÜR DIE "EXCELLENTE" ÜBERSICHTLICHKEIT DES CODES 😉

also hier der code...

weiss wirklich nicht, was der von mir will (der compiler)

Code:
import java.io.*;
import Tools.IO.*;
/**
* Memoryspiel.
*/
public class Memory
{
// Attribute
Spieler[] spieler;
SpielFeld spiel;
public static void main( String[] args)
{
// Erzeugt ein Memoryspiel
Memory memory = new Memory();
// Einlesen der Spieleranzahl
int spielerAnzahl
= IOTools.readInteger( " n = Wie viel Spieler gibt es? ");
// Erzeugen der Spieler
memory.spieler = new Spieler[ spielerAnzahl];
for( int i = 0; i < memory.spieler.length; i++)
memory.spieler[ i] = new Spieler();
// Erzeugen des Spielfeldes
memory.spiel = new SpielFeld();
memory.spiel.brett
= new int[memory.spiel.hoehe][memory.spiel.breite];
// Spielfeld
// Anordnen der Kartenpaare auf dem Spielfeld
int karte = 1;
for( int i = 0; i < memory.spiel.hoehe; i++)
for( int j = 0; j < memory.spiel.breite; j++)
memory.spiel.brett[ i][ j] = ++karte / 2;
// Mischen der Karten
int m1, n1, m2, n2, dummy;
for( int i = 0; i < memory.spiel.mischTiefe; i++)
{ m1 = (int)(( memory.spiel.hoehe) * Math.random());
n1 = (int)(( memory.spiel.breite) * Math.random());
m2 = (int)(( memory.spiel.hoehe) * Math.random());
n2 = (int)(( memory.spiel.breite) * Math.random());
dummy = memory.spiel.brett[ m1][ n1];
memory.spiel.brett[ m1][ n1] = memory.spiel.brett[ m2][ n2];
memory.spiel.brett[ m2][ n2] = dummy;
}
// Spieler
// Einlesen der Spielerdaten
for( int s = 0; s < memory.spieler.length; s++)
{
System.out.println( "Spieler "+ (s + 1));
memory.spieler[ s].vorName = Tools.stringEingabe( "Wie ist Dein Vorname? ");
memory.spieler[ s].nachName = IOTools.readLine( "Wie ist Dein Nachname? ");
}
// Spiel
int s = 0;
while( memory.spiel.kartenPaare != 0)
{
System.out.println
( "Spieler "+ memory.spieler[ s].vorName +
", du bist dran! Nimm zwei Karten!");
do // Karte 1
{
m1 = IOTools.readInteger( "");
n1 = IOTools.readInteger( "");
} while( m1 < 0 || n1 < 0 ||
m1 >= memory.spiel.hoehe || n1 >= memory.spiel.breite ||
memory.spiel.brett[ m1][ n1] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}

do // Karte 2
{
m2 = IOTools.readInteger( "");
n2 = IOTools.readInteger( "");
}
while( m1 == m2 && n1 == n2 ||
m2 < 0 || n2 < 0 ||
m2 >= memory.spiel.hoehe ||
n2 >= memory.spiel.breite ||
memory.spiel.brett[ m2][ n2] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}

// Auswertung
if( memory.spiel.brett[ m1][ n1] == memory.spiel.brett[ m2][ n2])
{
System.out.println( "Richtig, das Paar gehoehrt dir!");
memory.spieler[ s].gewonnenePaare++;
memory.spiel.kartenPaare--;
memory.spiel.brett[ m1][ n1] = 0;
memory.spiel.brett[ m2][ n2] = 0;
}
else
{ // Spielerwechsel
System.out.println( "Falsch, jetzt ist der Naechste dran!");
s++; s %= memory.spieler.length;
}
}
// Endstand
System.out.println( "Liste unsortiert: ");
for( int i = 0; i < memory.spieler.length; i++)
System.out.println( "Spieler "+ (i + 1) + ": " +
memory.spieler[ i].vorName + " " +
memory.spieler[ i].nachName + ", gewonnen: " +
memory.spieler[ i].gewonnenePaare + " Paare.");
}
}
 
sorry. also:

Memory.java....
Memory.java:48: cannot find symbol

symbol : variable vorName

location: class Spieler

memory.spieler[ s].vorName = Tools.stringEingabe( "Wie ist Dein Vorname? ");

^

Memory.java:48: stringEingabe() in Tools cannot be applied to (java.lang.String)

memory.spieler[ s].vorName = Tools.stringEingabe( "Wie ist Dein Vorname? ");

^

Memory.java:49: cannot find symbol

symbol : variable nachName

location: class Spieler

memory.spieler[ s].nachName = IOTools.readLine( "Wie ist Dein Nachname? ");

^

Memory.java:56: cannot find symbol

symbol : variable vorName

location: class Spieler

( "Spieler "+ memory.spieler[ s].vorName +

^

Memory.java:127: cannot find symbol

symbol : variable gewonnenePaare

location: class Spieler

memory.spieler[ s].gewonnenePaare++;

^

Memory.java:142: cannot find symbol

symbol : variable vorName

location: class Spieler

memory.spieler[ i].vorName + " " +

^

Memory.java:143: cannot find symbol

symbol : variable nachName

location: class Spieler

memory.spieler[ i].nachName + ", gewonnen: " +

^

Memory.java:144: cannot find symbol

symbol : variable gewonnenePaare

location: class Spieler

memory.spieler[ i].gewonnenePaare + " Paare.");

^

8 errors


Compilierung beendet


entweder ich bin blind oder ich versteh nicht was er für fehler findet... ?
 
Und wie schon gesagt: IOTools (und auch Tools) sind keine Standardklassen; daher wird es ohne den Code dieser Klassen schwer sein, konkret zu sagen, wie man sie benutzen muss.
 
Jede Menge Member der Klasse Spieler werden nicht gefunden; vermutlich weil es sie nicht gibt. Auch hier wäre der Code hilfreich (der Code der Klasse Spieler).
 
ok, ok. habe jetzt Spieler.java compiliert - Memory.java auch!

Das compilieren funzt nun EINWANDFREI.

Sobald ich nun Memory.java startet will, kommt von Windows die Fehlermeldung:

"Fehler!: <Memory> konnte nicht gestartet werden..."

Liegt das daran, das sowohl in Memory.java als auch in Spieler.java eine main-Methoden vorhanden ist??

Hier nochmal der code - sorry fürs lange code-posting..

Code:
import Tools.IO.*;
/**
* Spieler fuer ein Memoryspiel.
*/
public class Spieler
{
// Attribute
String nachName = "";
String vorName = "";
int gewonnenePaare = 0;
int gewonneneSpiele = 0;
/**
* Test der Klasse Spieler
*/
public static void main( String[] args)
{
// Einlesen der Spieleranzahl
int spielerAnzahl = IOTools.readInteger( "Wieviel Spieler gibt es? ");

// Erzeugen ein Feld von Spielern
Spieler[] spieler = new Spieler[ spielerAnzahl];
// Bereitstellen des Datenspeicher für jeden Spieler
for( int i = 0; i < spieler.length; i++)
spieler[ i] = new Spieler();
// Einlesen der Spielerdaten
for( int i = 0; i < spieler.length; i++)
{
System.out.println( "Spieler "+ (i + 1));
spieler[ i].vorName
= IOTools.readLine( "Wie ist Dein Vorname? ");
spieler[ i].nachName
= IOTools.readLine( "Wie ist Dein Nachname? ");
}
// Auflisten aller eingelesenen Spielerdaten
System.out.println( "Es spielen mit: ");
for( int i = 0; i < spieler.length; i++)
System.out.println( "Spieler "+ (i + 1) + " " +
spieler[ i].vorName + " " + spieler[ i].nachName);
}
}

Code:
import java.io.*;
import Tools.IO.*;
/**
* Memoryspiel.
*/
public class Memory
{
// Attribute
Spieler[] spieler;
SpielFeld spiel;
public static void main( String[] args)
{
// Erzeugt ein Memoryspiel
Memory memory = new Memory();
// Einlesen der Spieleranzahl
int spielerAnzahl
= IOTools.readInteger( " n = Wie viel Spieler gibt es? ");
// Erzeugen der Spieler
memory.spieler = new Spieler[ spielerAnzahl];
for( int i = 0; i < memory.spieler.length; i++)
memory.spieler[ i] = new Spieler();
// Erzeugen des Spielfeldes
memory.spiel = new SpielFeld();
memory.spiel.brett
= new int[memory.spiel.hoehe][memory.spiel.breite];
// Spielfeld
// Anordnen der Kartenpaare auf dem Spielfeld
int karte = 1;
for( int i = 0; i < memory.spiel.hoehe; i++)
for( int j = 0; j < memory.spiel.breite; j++)
memory.spiel.brett[ i][ j] = ++karte / 2;
// Mischen der Karten
int m1, n1, m2, n2, dummy;
for( int i = 0; i < memory.spiel.mischTiefe; i++)
{ m1 = (int)(( memory.spiel.hoehe) * Math.random());
n1 = (int)(( memory.spiel.breite) * Math.random());
m2 = (int)(( memory.spiel.hoehe) * Math.random());
n2 = (int)(( memory.spiel.breite) * Math.random());
dummy = memory.spiel.brett[ m1][ n1];
memory.spiel.brett[ m1][ n1] = memory.spiel.brett[ m2][ n2];
memory.spiel.brett[ m2][ n2] = dummy;
}
// Spieler
// Einlesen der Spielerdaten
for( int s = 0; s < memory.spieler.length; s++)
{
System.out.println( "Spieler "+ (s + 1));
memory.spieler[ s].vorName = IOTools.readLine( "Wie ist Dein Vorname? ");
memory.spieler[ s].nachName = IOTools.readLine( "Wie ist Dein Nachname? ");
}
// Spiel
int s = 0;
while( memory.spiel.kartenPaare != 0)
{
System.out.println
( "Spieler "+ memory.spieler[ s].vorName +
", du bist dran! Nimm zwei Karten!");
do // Karte 1
{
m1 = IOTools.readInteger( "");
n1 = IOTools.readInteger( "");
} while( m1 < 0 || n1 < 0 ||
m1 >= memory.spiel.hoehe || n1 >= memory.spiel.breite ||
memory.spiel.brett[ m1][ n1] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}

do // Karte 2
{
m2 = IOTools.readInteger( "");
n2 = IOTools.readInteger( "");
}
while( m1 == m2 && n1 == n2 ||
m2 < 0 || n2 < 0 ||
m2 >= memory.spiel.hoehe ||
n2 >= memory.spiel.breite ||
memory.spiel.brett[ m2][ n2] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}

// Auswertung
if( memory.spiel.brett[ m1][ n1] == memory.spiel.brett[ m2][ n2])
{
System.out.println( "Richtig, das Paar gehoehrt dir!");
memory.spieler[ s].gewonnenePaare++;
memory.spiel.kartenPaare--;
memory.spiel.brett[ m1][ n1] = 0;
memory.spiel.brett[ m2][ n2] = 0;
}
else
{ // Spielerwechsel
System.out.println( "Falsch, jetzt ist der Naechste dran!");
s++; s %= memory.spieler.length;
}
}
// Endstand
System.out.println( "Liste unsortiert: ");
for( int i = 0; i < memory.spieler.length; i++)
System.out.println( "Spieler "+ (i + 1) + ": " +
memory.spieler[ i].vorName + " " +
memory.spieler[ i].nachName + ", gewonnen: " +
memory.spieler[ i].gewonnenePaare + " Paare.");
}
}

thanx beforehand
 
Wie startest du das Programm denn? Von der Eingabeaufforderung aus mit java Memory ? Liegen im aktuellen Verzeichnis auch die *.class-Dateien? Wie ist der Wert der Umgebungsvariablen CLASSPATH?
 
Also:

Die *.class Dateien und die *.java dateien liegen im gleichenn verzeichnis.

an CLASSPATH könnte es natürlich liegen...

Name: CLASSPATH
Wert: ;C:\***PFAD***\Tools.zip

-> Systemvariable...

komisch, nich war??
 
Nein, das sollst du an der Kommandozeile eintippen, wenn du die Java-Anwendung starten willst.

Also ganz von vorne:
1. Eingabeaufforderung öffnen
2. per cd in das Verzeichnis wechseln, in dem sich deine Sourcen befinden
3. per dir überprüfen, ob hier wirklich die auch *class-Files sind
4. java -version eingeben; damit prüfst du, ob die VM korrekt installiert ist
5. Dein Programm starten mit java -cp . Memory
 
also, habe jdk neu installiert natürlich inkl. der jre.

wenn ich andere spiele compiliere und anschließend starte, funktionierts auch. sobald ich aber Spieler und Memory compilieren und anschließend starten will erscheint die Fehlermeldung: <Memory bzw. SpielFeld> konnte nicht gestartet werden. Danach funzen auch die Programme die vorher noch liefen nicht mehr...

das ist doch irgendwie sehr misteriös...

erkennt ihr irgendeinen Eintrag, der diese Fehlermeldung versuchachen könnte???


Code:
import Tools.IO.*;
/**
* Spieler fuer ein Memoryspiel.
*/
public class Spieler
{
// Attribute
String nachName = "";
String vorName = "";
int gewonnenePaare = 0;
int gewonneneSpiele = 0;
/**
* Test der Klasse Spieler
*/
public static void main( String[] args)
{
// Einlesen der Spieleranzahl
int spielerAnzahl = IOTools.readInteger( "Wieviel Spieler gibt es? ");

// Erzeugen ein Feld von Spielern
Spieler[] spieler = new Spieler[ spielerAnzahl];
// Bereitstellen des Datenspeicher für jeden Spieler
for( int i = 0; i < spieler.length; i++)
spieler[ i] = new Spieler();
// Einlesen der Spielerdaten
for( int i = 0; i < spieler.length; i++)
{
System.out.println( "Spieler "+ (i + 1));
spieler[ i].vorName
= IOTools.readLine( "Wie ist Dein Vorname? ");
spieler[ i].nachName
= IOTools.readLine( "Wie ist Dein Nachname? ");
}
// Auflisten aller eingelesenen Spielerdaten
System.out.println( "Es spielen mit: ");
for( int i = 0; i < spieler.length; i++)
System.out.println( "Spieler "+ (i + 1) + " " +
spieler[ i].vorName + " " + spieler[ i].nachName);
}
}

Code:
/**
* Spielfeld fuer ein Memoryspiel.
*/
public class SpielFeld
{
// Attribute
int hoehe = 4;
int breite = 4;
int kartenPaare = 8;
int mischTiefe = 100;
int[][] brett;
/**
* Test der Klasse SpielFeld
*/
public static void main( String[] args)
{
// Erzeugen eines Objekts der Klasse SpielFeld
SpielFeld spiel = new SpielFeld();
// Erzeugen des Spielbretts
spiel.brett = new int[ spiel.hoehe][ spiel.breite];

// Anordnen der Kartenpaare auf dem Spielbrett
int karte = 1;
for( int i = 0; i < spiel.hoehe; i++)
for( int j = 0; j < spiel.breite; j++)
spiel.brett[ i][ j] = ++karte / 2;
// Mischen der Karten
int m1, n1, m2, n2, dummy;
for( int i = 0; i < spiel.mischTiefe; i++)
{
m1 = (int)(( spiel.hoehe) * Math.random());
n1 = (int)(( spiel.breite) * Math.random());
m2 = (int)(( spiel.hoehe) * Math.random());
n2 = (int)(( spiel.breite) * Math.random());
dummy = spiel.brett[ m1][ n1];
spiel.brett[ m1][ n1] = spiel.brett[ m2][ n2];
spiel.brett[ m2][ n2] = dummy;
}



// Kontrollausgabe des Spielbretts
for( int i = 0; i < spiel.hoehe; i++)
{
for( int j = 0; j < spiel.breite; j++)
{
if( spiel.brett[ i][ j] < 10) System.out.print( " ");
if( spiel.brett[ i][ j] < 100) System.out.print( " ");
System.out.print( " " + spiel.brett[ i][ j] + " | ");
}
System.out.println( "");
}
}
}
 
es ist ja auch egal. So weit ich weiss ich joe eines bekanntesten programme für java!

ist ja auch egal.

kann ich es irgendwie anders hinkriegen?

ich muss übermorgen mit dem spiel fertig. ich muss alles tun und ich werde alles tun müssen um dieses spiel fertig zu kriegen!

hey murray, ich würde sogar...
 
Gast hat gesagt.:
So weit ich weiss ich joe eines bekanntesten programme für java!

Ich habe hier auch öfter von Joe gelesen, aber wenn das

Joe hat gesagt.:
erscheint die Fehlermeldung: <Memory bzw. SpielFeld> konnte nicht gestartet werden
das einzige ist, was Joe dir erzählt,
würde ich das in die Tonne treten.

Geh(Kommandoshell) doch einfach in das Verzeichnis,
in dem deine .class-Dateien sind und starte ganz normal mit

Code:
java Memory

und schau dir (poste) die Fehlermeldung.
 
Kannst du Memory denn überhaupt übersetzen? Ich kann das nicht; irgendwie stimmt etwas mit der Klammerung nicht - vernünftige Einrückungen würden helfe, das zu erkennen.
 
Sorry, das stimmte nicht - die Einrückung ist zwar mehr als verbesserungsfähig, grundsätzlich stimmt die Klammerung aber soweit, dass die Klasse übersetzbar ist.

Und - hast du es schon mal von der Kommandozeile aus versucht?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben