java will nich in variable schreiben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
fakespace
Beiträge: 154
Registriert: 24.09.2004 11:37:03

java will nich in variable schreiben

Beitrag von fakespace » 27.11.2004 14:44:26

moin

hab hier bisschen mit java rumgespielt, allerdings scheint was nich so ganz zu gehen ;)

Code: Alles auswählen

public class test {
		public static void main(String[] args) {
			String lastName = "";								// this variable is used to store the last name
			Out.println("Geben Sie Ihren Nachnamen ein: ");
			lastName = In.readLine();							// stores the last name
			Out.println("Moin");
			Out.println(lastName);
		}
}
(Das System bei In und Out fehlt, weil wir von der UNI aus andere in und out classen nehmen)

Das Programm laeuft bei nem Komilitonen einwandfrei. Fragt den Namen ab, gibt Moin und den Namen aus. Bei mir allerdings fragt es nur den Namen ab und haengt dann. mit strace hab ich es mir mal angesehen, es steht dann auf

read (0,

ich gebe nen Namen ein, und es kommt:
read(0, Name
"Name\n", 8192) = 4
read(0,
sieht fuer mich so aus, als koenne er nich in die variable schreiben.


Hatte java 1.4 drauf (so lief es bei meinemKomilitonen) hab jetzt mal auf
java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

upgedated, aber laeuft immer noch nich :(



danke schon mal fuer Eure Hilfe ;)

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 27.11.2004 15:46:12

hi,

schwer zu sagen, da momentan nur du die UNI-api kennst ;)

kann man so machen:

bufferedreader erzeugen:
in = new BufferedReader(new InputStreamReader(System.in));

dann einlesen und ausgeben::
System.out.println(in.readLine());

fakespace
Beiträge: 154
Registriert: 24.09.2004 11:37:03

Beitrag von fakespace » 27.11.2004 16:32:20

Also die beiden classen kann ich sicher hier online stellen, wobei es nich daran liegt, weil es ja bei meinem Komilitonen laeuft.

Das mit dem BufferReader versteh ich nich so ganz, wie meinste das denn ?

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 27.11.2004 17:15:33

hmm, hier mal ein bleistift:

Code: Alles auswählen


import java.io.BufferedReader;
import java.io.InputStreamReader;

public class test {

    public static void main(String[] args) {
        System.out.print("name:");
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("dein name ist: "+in.readLine());
        } catch (Exception e) {

        }
    }
}

wegen bufferedreader , siehe hier: http://www.galileocomputing.de/openbook ... eredReader

fakespace
Beiträge: 154
Registriert: 24.09.2004 11:37:03

Beitrag von fakespace » 27.11.2004 17:26:23

Jup, der code geht, fragt nach nem Name, und gibt ihn dann aus


Naja, jetzt weiss ich zwar, dass es mit nem "Trick" geht, aber eigentlich sollte es ja auch mit meinem code gehen ...

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 27.11.2004 18:07:37

> jetzt weiss ich zwar, dass es mit nem "Trick" geht,

Kein trick, ist die standard-api von sun :D

> ... aber eigentlich sollte es ja auch mit meinem code gehen ...

Da gebe ich dir vollkommen recht ;)
Hängt wie gesagt von der implementierung der klassen In und Out ab, die es ja in der
standard-api nicht gibt. Daher kann weder ich noch jemand anders helfen, da niemand
weiss was die klassen In und Out eigentlich genau machen.

fakespace
Beiträge: 154
Registriert: 24.09.2004 11:37:03

Beitrag von fakespace » 27.11.2004 18:19:25

Naja, wenn es sich jemand antun will ;)


http://paste.phpfi.com/38743

http://paste.phpfi.com/38744


Ich hab die codefragmente zwecks lesbarkeit auf nopaste[1] abgelegt.
Bitte in Zukunft die Verhaltensregeln[2] lesen, und das selber machen.

gruss
manuel(aka suntsu)

[1] http://paste.phpfi.com/
[2] http://www.debianforum.de/wiki/Debianfo ... tensregeln (speziell Punkt 2.6)

Benutzeravatar
muppets
Beiträge: 142
Registriert: 31.08.2004 21:13:53
Wohnort: Dortmund

Beitrag von muppets » 28.11.2004 12:36:05

fakespace hat geschrieben: In.java

Code: Alles auswählen

..
public  static final char eof   = '\uffff';
..
Diese Stelle funktioniert wohl nur unter Windows, wie wohl bei Deinem Komilitonen. Wenn Du stattdessen folgendes nimmst, dann funktioniert es zumindest bei mir:

Code: Alles auswählen

..
public  static final char eof   = '\n';
..
Denn die While-Schleife, die die Charakter ausliest, wird sonst nie beendet.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 28.11.2004 13:17:00

jepp... könnte man mit System.getProperty("line.separator") ermitteln , oder ?
das sollte dann ein stück mehr OS-independent sein. Wir wollen ja die armen
MAC-user nicht vergessen ;)

fakespace
Beiträge: 154
Registriert: 24.09.2004 11:37:03

Beitrag von fakespace » 28.11.2004 15:20:52

Jo, anscheinend liegt es daran, hat sich im Forum der Uni nu auch rumgesprochen. Allerdings hat mein Komilitone auch nen Debian Sarge, auf dem es laeuft, weiss zwar nich, warum es bei hm geht, is ja aber auch egal, nu geht es auch bei mir ;)


Finde nur schlimm, dass unsere Informatik Fakultaet so nen Mist produziert . . .


Vielen Dank an alle die mir geholfen haben ;)

Antworten