# IOTools.readLine



## Guest (27. Sep 2007)

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

was ist hieran falsch???:


```
// 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? ");
}
```


----------



## Murray (27. Sep 2007)

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?


----------



## Wildcard (27. Sep 2007)

Das wissen wir nicht, weil IOTools keine Klasse der Java Bibliothek ist.
Wahrscheinlich tust du gut daran sie einfach zu verbrennen.


----------



## Guest (27. Sep 2007)

ERSTMAL: SORRY FÜR DIE "EXCELLENTE" ÜBERSICHTLICHKEIT DES CODES 

also hier der code...

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


```
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.");
}
}
```


----------



## Gast (27. Sep 2007)

braucht ihr auch die fehlermeldungen?


----------



## Murray (28. Sep 2007)

Das wäre ganz reizend, ja....


----------



## Guest (28. Sep 2007)

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... ?


----------



## Murray (28. Sep 2007)

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.


----------



## Murray (28. Sep 2007)

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).


----------



## Guest (28. Sep 2007)

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


```
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);
}
}
```


```
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


----------



## Murray (28. Sep 2007)

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?


----------



## Guest (28. Sep 2007)

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??


----------



## Murray (28. Sep 2007)

Versuch mal *java -cp . Memory*.


----------



## Guest (28. Sep 2007)

Murray hat gesagt.:
			
		

> Versuch mal *java -cp . Memory*.



wo soll ich das eingeben??

als Wert für CLASSPATH??


----------



## Murray (28. Sep 2007)

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*


----------



## Leroy42 (28. Sep 2007)

Gast hat gesagt.:
			
		

> braucht ihr auch die fehlermeldungen?





			
				Murray hat gesagt.:
			
		

> Das wäre ganz reizend, ja....



*LOL*! Das hat was!  :lol:


----------



## Guest (28. Sep 2007)

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???



```
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);
}
}
```


```
/**
* 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( "");
}
}
}
```


----------



## Murray (28. Sep 2007)

Nochmal: wie startest Du die Memory-Anwendung?


----------



## Gast (28. Sep 2007)

über Joe und Strg+F5


----------



## Murray (28. Sep 2007)

Joe kenne ich nicht, tut mir leid.


----------



## Gast (28. Sep 2007)

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


----------



## Leroy42 (28. Sep 2007)

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


```
java Memory
```

und schau dir (poste) die Fehlermeldung.


----------



## Murray (28. Sep 2007)

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.


----------



## Murray (28. Sep 2007)

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?


----------



## Murray (28. Sep 2007)

Dafür, dass es vorhin noch ach so dringend war, ist heute ziemlich wenig passiert - was ist los?


----------

