PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kann mir jemand bei java helfen



mamut77
17.02.2005, 14:52
hi leute
bin grad dabei zu java lernen und programmier so ein beispielprogramm
wie ihr hier sehen könnt ist es zur zeit nicht sehr anspruchsvoll
:


Code:

package Fahrzeug;
abstract class StrassenFzg {
protected String bez;
protected short geschw;
protected boolean verliehen;
abstract boolean eingeben();
abstract boolean anzeigen();
public boolean verleihen() {
if (verliehen)
return false;
else {
verliehen = true;
return true;
}
}
}
-------------------------------------------------------------------------------------------------

Code:

public class Auto extends StrassenFzg {
protected short plaetze;
public boolean eingeben() {
Scanner eingabe = new Scanner(System.in);
try {
System.out.print("Bezeichnung: ");
bez = eingabe.next();
System.out.print("Sitzplaetze: ");
plaetze = eingabe.nextShort();
System.out.print("Geschwindigkeit: ");
geschw = eingabe.nextShort();
return true;
} catch (Exception e) {
return false;
}
}
public boolean anzeigen() {
System.out.println("/nDas Auto ist ein " + bez);
System.out.println("Es hat " + plaetze + " Sitze.");
System.out.println("Der Top-Speed: " + geschw);
if (verliehen)
System.out.println("Es ist verliehen.");
else
System.out.println("Es ist nicht verliehen.");
return true;
}
}
------------------------------------------------------------------------------------------------------------------------------

Code:

public class AutoTest {
public static void main(String[] args) {

Auto ein_auto;
ein_auto = new Auto();
if (ein_auto.eingeben())
ein_auto.anzeigen();
else
System.out.println("Fehlerhafte Eingabe!");

}
}
-----------------------------------------------------------------------------------
das wars jetzt meine frage
wenn ich es laufen lasse und bei der bezeichnung zb. volvo v70 eingebe und enter drücke
erkennt er das wort noch dem leerzeichne als sitzplätze an und liefert dannch:

Bezeichnung: volvo v40

Sitzplaetze: Fehlerhafte Eingabe!

hab schon alles mögliche probier(delimiters usw.)
aber nie klappt es so wie es sein sollte
hat jemand ein tip wie es klappen könnte

danke im voraus

mamut77
18.02.2005, 08:32
keiner ne idee??????????

pacman8)
18.02.2005, 12:45
Versuchs mal mit folgender Zeile:
eingabe.useDelimiter("\n");
Setze die nach der Zeile ein, wo Du eine Instanz der Klasse Scanner erzeugst.

mamut77
18.02.2005, 14:12
jetzt kann ich zwar die sitzplätze eingeben aber
in der nächsten zeile steht sofor fehlerhafte eingabe

pacman8)
18.02.2005, 14:24
Hm, bei mir funktionierts. Gibst Du irgendwie noch einen Abstand nach den Sitzplätzen ein?

mamut77
18.02.2005, 15:12
kannst du mir noch mal genau die zeile zeigen wo ich die zeile einfügen soll

pacman8)
18.02.2005, 15:20
import java.util.Scanner;

public class Auto extends StrassenFzg {
protected short plaetze;

public boolean eingeben() {
Scanner eingabe = new Scanner(System.in);
eingabe.useDelimiter("\n");

try {
System.out.print("Bezeichnung: ");
bez = eingabe.next();
System.out.print("Sitzplaetze: ");
plaetze = eingabe.nextShort();
System.out.print("Geschwindigkeit: ");
geschw = eingabe.nextShort();
return true;
} catch (Exception e) {
return false;
}
}

public boolean anzeigen() {
System.out.println("\nDas Auto ist ein " + bez);
System.out.println("Es hat " + plaetze + " Sitze.");
System.out.println("Der Top-Speed: " + geschw);
if (verliehen) System.out.println("Es ist verliehen.");
else System.out.println("Es ist nicht verliehen.");
return true;
}
}

mamut77
18.02.2005, 15:38
bei mir funktioniert das nicht nach der 2. eingabe wird sofort abgebrochen egal was ich dann mache

pacman8)
18.02.2005, 16:04
hm... und wenn du den String "\n" durch "\r\n" ersetzest?

mamut77
18.02.2005, 17:03
hee super das funktioniert
danke für deine hilfe

pacman8)
18.02.2005, 17:28
Bitte, bitte...
Ich hätte früher daran denken sollen, dass Linux für einen Zeilenumbruch das Byte 10 verwendet, also "\n" und Windows die Bytefolge 13, 10, also "\r\n" tsts :)

zer00
18.02.2005, 17:59
Ehm, meinst Du nicht ein ASCII-Zeichen, wie z.B. #9 für Tab unter Delphi(Pascal)?

Denn das 10. Byte wäre ein bisschen grösser als Int 10.

grz zer00

pacman8)
18.02.2005, 18:29
Oh, natürlich meinte ich oben Bytewerte nicht Offsets.

zer00
18.02.2005, 22:45
Bitte nicht falsch verstehen, habs nicht böse gemeint. :)

grz zer00

pacman8)
19.02.2005, 11:02
:)