Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Wie in Java nur einzelnes Zeichen einlesen? (wie Readkey in Pascal)

Mitglied: dq28121989

dq28121989 (Level 1) - Jetzt verbinden

10.01.2010 um 21:53 Uhr, 15293 Aufrufe, 13 Kommentare

Hallo, ich würde gerne wissen wie man möglichst "Unkompliziert" nur ein einzelnes Zeichen einlesen kann ohne Enter drücken zu müssen. In Pascal gab es eine nette funktion die sich Readkey(); nannte.

Beispiel für die Anwendung:
menu=Tastatur.liesInt();//<-----------------hier soll nur eine Taste eingelesen werden
switch(menu)
{
case 1:
{

break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 0:
{
System.out.println("Auf Wiedersehen!");
break;
}
default:
{
System.out.println("Falsche Eingabe!");
break;
}

}


Ich hoffe ihr habt eine einfache Lösung für mein Problem.
Mitglied: maretz
10.01.2010 um 21:58 Uhr
die frage ist erstmal: baust du ne konsolen-anwenung, eine gui oder was auch immer?

das dürfte dir aber ggf. helfen: http://packard.flint.umich.edu/~hickslm/313/exceptions/GetChar.html
Bitte warten ..
Mitglied: dq28121989
10.01.2010 um 22:30 Uhr
Anhand von System.out.println(); sollte man erkennen das es sich um eine Konsolenanwengung handelt.

Dein Link sieht sehr interessant aus, allerdings funktioniert der quelltext nicht, mein Compiler gibt mir 22 Errors aus.
Ansonsten Danke schonmal.


Dieser Code hilft mir schon etwas weiter:
static public char getChar() throws IOException
{
char ch = (char) System.in.read();
flushInput(); // This clears out System.in
return ch;
}

Nur gibt es da Probleme.
-Flushinput() existiert scheinbar nicht (auch nicht in System.in.flushinput();)
Wenn mir damit jemand helfen könnte wäre das Problem gelöst.

lg Steven
Bitte warten ..
Mitglied: maretz
11.01.2010 um 07:42 Uhr
Nö - nur weil du nen Sys-Out-Println verwendest is das noch lang keine Konsolenanwendung... Du wirst dich wundern - ich nutze sowas in meiner Anwendung auch oft (z.B. in den SQL-Klassen) damit ich einfach ne kleine Debug-Ausgabe auf die (Eclipse-)Konsole zaubere... Dies hat den Vorteil das es eben nicht gleich in der Anwendung aufpoppt - und mich 30 Kollegen anrufen was denn die komische Meldung da auf dem Schirm soll....
Bitte warten ..
Mitglied: Marco123
11.01.2010 um 16:37 Uhr
http://openbook.galileodesign.de/javainsel7/javainsel_04_007.htm

den Rest darfst du alleine machen, dann lernst du auch etwas noch dabei :- )
Bitte warten ..
Mitglied: dq28121989
11.01.2010 um 17:03 Uhr
@maretz: okay dann entschuldige meine Bemerkung
Bitte warten ..
Mitglied: dq28121989
11.01.2010 um 17:05 Uhr
Das ist noch nicht das was ich suche... Zeichenketten zerlegen ist eine andere Sache wie ein einzelnes Zeichen einlesen. Ich möchte z.b. die taste 1 drücken und das Programm läuft weiter. In dem Fall (wenn ichdas so richtig verstanden habe) muss ich erst enter drücken und das ist das was ich nicht haben möchte.
Bitte warten ..
Mitglied: 76109
11.01.2010 um 20:02 Uhr
Hallo dq28121989!

Ich habe zwar keine Ahnung von Java, aber eventuell funktioniert das hier:

01.
char buffer[]; 
02.
 
03.
System.in.read(buffer, 0, 1); 
04.
 
05.
switch(buffer[0]) 
06.
07.
Case '1':  break; 
08.
... 
09.
}
Lese in Buffer beginnend ab Offset 0 ein Zeichen (Byte) ein.

Und mit Case z.B. nicht auf Integer 1 sondern auf Char '1' prüfen

Gruß Dieter
Bitte warten ..
Mitglied: Marco123
11.01.2010 um 20:20 Uhr
Zitat von 76109:
Hallo dq28121989!

Ich habe zwar keine Ahnung von Java, aber eventuell funktioniert das hier:

01.
> char buffer[]; 
02.
>  
03.
> System.in.read(buffer, 0, 1); 
04.
>  
05.
> switch(buffer[0]) 
06.
> { 
07.
> Case '1':  break; 
08.
> ... 
09.
> } 
10.
> 
Lese in Buffer beginnend ab Offset 0 ein Zeichen (Byte) ein.

Und mit Case z.B. nicht auf Integer 1 sondern auf Char '1' prüfen

Gruß Dieter



Das bringt nichts :- )

das Problem ist das blockierende lesen:
die System.in.read(); methode wartet auf ein ENTER.

Ob du den Wert in ein Byte Array oder in eine Variable oder sonst wo hin schiebst ist egal ,)

er brauch eine andere Methode um den Stream zu lesen.

mir fallen nur die Methode ein:
System.in.read() -> ist blockierend also nein.
Console -> keine Ahnung. glaube aber ist auch blockierend.


ODER:
Du schreibst dir ne GUI Applikation, und implementierst Actionlistener.
Sobald der User etwas schreibt holst du dir den Text.

Aber von der Console aus zu lesen fällt mir auf die schnelle nichts ein.
Bitte warten ..
Mitglied: 76109
11.01.2010 um 20:31 Uhr
Hallo Macro!

Naja, ich war der Meinung, dass der Parameter für nur 1 Zeichen einlesen kein Enter erforderlich macht. Da habe ich mich wohl geirrt

Gruß Dieter
Bitte warten ..
Mitglied: Marco123
11.01.2010 um 20:42 Uhr
habs eben mal ausprobiert, jedoch musste ich trotzdem enter drücken ,)

hier die defination der Methode:

int java.io.InputStream.read(byte[] b, int off, int len) throws IOException

read
public int read(byte[] b,
int off,
int len)
throws IOException
Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.
This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off] and elements b[off+len] through b[b.length-1] are unaffected.

The read(b, off, len) method for class InputStream simply calls the method read() repeatedly. If the first such call results in an IOException, that exception is returned from the call to the read(b, off, len) method. If any subsequent call to read() results in a IOException, the exception is caught and treated as if it were end of file; the bytes read up to that point are stored into b and the number of bytes read before the exception occurred is returned. The default implementation of this method blocks until the requested amount of input data len has been read, end of file is detected, or an exception is thrown. Subclasses are encouraged to provide a more efficient implementation of this method.


Parameters:
b - the buffer into which the data is read.
off - the start offset in array b at which the data is written.
len - the maximum number of bytes to read.
Returns:
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
Throws:
IOException - If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
NullPointerException - If b is null.
IndexOutOfBoundsException - If off is negative, len is negative, or len is greater than b.length - off
See Also:
read()
Bitte warten ..
Mitglied: dq28121989
12.01.2010 um 12:12 Uhr
könntest du mir einen Link dazu schicken? Den Copy-Paste-Salat kann man ja nicht lesen. Der code verteilt sich auf mehrere zeilen.
Ist die Methode für Gui oder konsolenanwendungen?
Bitte warten ..
Mitglied: Marco123
12.01.2010 um 12:30 Uhr
Hallo,

dies war die Erklärung die mir Eclipse dazu geliefert hat.
Falls du kein Eclipse installiert hast, schau mal ansonsten in google nach java.io.read
Bitte warten ..
Mitglied: dq28121989
12.01.2010 um 12:34 Uhr
okay danke das ist schonmal ein guter ansatz
Bitte warten ..
Ähnliche Inhalte
Python
Python von ZEICHEN bis ZEICHEN
gelöst Frage von schneerunzelPython2 Kommentare

Hallo, ich glaube ich habe eine ganz einfache Frage: Ich möchte aus eine Testdatei die So aufgebaut ist: ID;Vorname;Name;Jahrgang ...

Batch & Shell
Einlesen von Passwörtern
gelöst Frage von honeybeeBatch & Shell7 Kommentare

Hallo, wie muss das Bash-Skript aussehen, wenn man Passwörter einlesen möchte? Mein Versuch führt zu dieser Fehlermeldung: read: Illegal ...

Batch & Shell

Zeichenkette ohne Trennzeichen per FOR-Schleife in einzelne Zeichen zerlegen

gelöst Frage von RaSi76Batch & Shell7 Kommentare

Hallo, trotz intensiver Suche und zahlreichen Versuchen, habe ich bisher keine Lösung für mein (triviales?) Problem finden können, evtl. ...

Entwicklung

Delphi-Script: Abgriff von Zeichen bis Zeichen

gelöst Frage von archivarioEntwicklung3 Kommentare

Hallo zúsammen, vielleicht kann mir jemand helfen. Ich muss in einem Delphi Programm per Script ein bestimmtes Zeichen rausfiltern ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 7 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 13 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 17 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...