Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Campusleben, Job und Karriere

Java: einzelne Zeichen einlesen

  -1- -2- vorwärts >>>  
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 21.10.2011 um 21:38 Uhr

kleine Frage vermutlich zum Lachen für profis,

Ich will eine Eingabe machen, die eine bestimmte Gestalt hat.
Sie soll ein Unicode-Zeichen umfassen also von der Art \uxxxx
Dabei soll natürlich jedes Zeichen auf seinen richtigen Wert kontrolliert werden.

Frage: Wie kann ich jedes Zeichen prüfen wenn ich nur System.in.read() verwenden darf?
Problem ist ich find nichts passendes dazu im internet (mir würd also auch ein nützlicher Link reichen) und wir sollens im Praktikum verbauen ohne es vorher in der Vorlesung gehabt zu haben^^

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 21.10.2011 um 21:48 Uhr

Wenn du die Eingabe in einen String rein schreibst, kannst du ja durch iterieren ;-)
for(int i = 0; i < str.length; ++i) {
char c = str.charAt(i);
// mache irgendwas
}

oder so :-)
scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 21.10.2011 um 21:55 Uhr

oder eben so lange von System.in.read() lesen, bis du -1 zurück bekommst
int in = System.in.read();
while(in != -1) {
// mache irgendwas mit in

// naechstes byte
in = System.in.read();
}
Targunitoth - 33
Halbprofi (offline)

Dabei seit 01.2006
225 Beiträge

Geschrieben am: 21.10.2011 um 21:56 Uhr
Zuletzt editiert am: 21.10.2011 um 21:56 Uhr

Mit System.in.read(); kannst du immer nur ein Zeichen einlesen.
Du kannst natürlich immer Enter drücken und jedes Zeichen in ein (Char) Array speichern, oder du nimmst alternativ:
bufferedReader = new BufferedReader(new InputStreamReader(System.in));

Das ganze speicherst du in einem String, den bei dem String kannst du mit indexOf( ); jedes Zeichen einzeln untersuchen. (Vorher maximale länge bestimmen)
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 21.10.2011 um 21:58 Uhr

Ah danke euch werd ich gleich mal ausprobieren :)

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 21.10.2011 um 21:58 Uhr

Zu dem ganzen UTF-8 Gedöns kann ich nur sagen:
[verlinkte Grafik wurde nicht gefunden]
herbstkaelte
Fortgeschrittener (offline)

Dabei seit 10.2011
48 Beiträge

Geschrieben am: 22.10.2011 um 14:39 Uhr

Ist dein Problem schon gelöst?
Darfst du Strings überhaupt verwenden wenn du nur System.in.read() zur Verfügung hast?
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 22.10.2011 um 22:28 Uhr

Zitat von herbstkaelte:

Ist dein Problem schon gelöst?
Darfst du Strings überhaupt verwenden wenn du nur System.in.read() zur Verfügung hast?


War ein wenig ungenau augedrückt. Wir dürfen nur die Bibliotheks-Befehle System.in.read() und Syste.out.println() verwenden. Ansonsten können wir machen wie wir wollen.

Fertig bin ich noch nicht, weil wir noch Exceptions werfen sollen und da hab ich keinen Plan (mehr) von. Mein bescheidenes Wissen basiert auf ner Grundlagenvorlesung vor 3 Jahren ^^

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 22.10.2011 um 23:15 Uhr

Zitat von Iluron:

Zitat von herbstkaelte:

Ist dein Problem schon gelöst?
Darfst du Strings überhaupt verwenden wenn du nur System.in.read() zur Verfügung hast?


War ein wenig ungenau augedrückt. Wir dürfen nur die Bibliotheks-Befehle System.in.read() und Syste.out.println() verwenden. Ansonsten können wir machen wie wir wollen.

Fertig bin ich noch nicht, weil wir noch Exceptions werfen sollen und da hab ich keinen Plan (mehr) von. Mein bescheidenes Wissen basiert auf ner Grundlagenvorlesung vor 3 Jahren ^^


Entweder du nimmst eine Exception, die es bereits gibt und machst ein "throw new Exception("irgendwas");"
Oder du machst eine eigene Exception-Klasse (public class FooException extends Exception {.....}) und machst dann ein "throw new FooException("irgendwas");"
herbstkaelte
Fortgeschrittener (offline)

Dabei seit 10.2011
48 Beiträge

Geschrieben am: 22.10.2011 um 23:57 Uhr

Exceptions werden mit try-catch abgefangen.

Zitat:


try {
Anweisung(en), welche Exceptions auslösen können
} catch (IOException ex) {
System.err.println(ex.getMessage());
}


In deinem Fall wäre das eine IOException. Es lassen sich auch mehrere Exceptions mit nur einem try-catch abfangen, dazu musst du nach der letzten geschweiften Klammer auf dem Beispiel einfach nochmal catch (Art der Exception) { blabla } schreiben, wobei weiter oben die speziellen und unten die allgemeinen Exceptions stehen müssen (wenn die allgemeine oben steht, fängt sie bereits alles mögliche ab und die anderen können nie abgefragt werden).
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 25.10.2011 um 12:58 Uhr

Noch ne Frage^^

Kann ich den System,in.read() irgendwie ummodeln, dass er nicht das erste Zeichen einließt sondern sagen wir das dritte?
Beispiel:

Ich hab die Eingabe Test

will jetzt aber hier den 3. Buchstaben, also das s.



Mein Problem ist : wir sollen eine Wahrheitstabelle in der ersten Teilaufgabe erzeugen

jetzt soll man durch Kurzschreibweise (T oder F für booleans und dazwischen der Operator also Beispiel : T|F) eine Eingabe erfolgen der Wert errechnet und wieder ausgegeben werden.

Mit dem errechnen hab ich kein Problem, Ausgabe ist auch klar.

Ich hab nur noch nicht hinbekommen mit in,read() die verschiedenen Elemente der Eingabe rauszulesen,

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

herbstkaelte
Fortgeschrittener (offline)

Dabei seit 10.2011
48 Beiträge

Geschrieben am: 25.10.2011 um 13:17 Uhr

Klick mich.

Man kann das Pferd auch von hinten aufzäumen. Mit readln() statt read() wärs ein Einzeiler^^.
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 25.10.2011 um 13:21 Uhr

Zitat von herbstkaelte:

Klick mich.

Man kann das Pferd auch von hinten aufzäumen. Mit readln() statt read() wärs ein Einzeiler^^.


Wäre es aber ich darf ja nur read() benutzen^^

Ansonsten hätte ich die fragen nicht stellen müssen, dann hätt ich das ganze Ding ganz anders angepackt^^

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

herbstkaelte
Fortgeschrittener (offline)

Dabei seit 10.2011
48 Beiträge

Geschrieben am: 25.10.2011 um 13:24 Uhr

War nicht an dich direkt gerichtet, eher an den Aufgabensteller, der hier natürlich nicht mit liest.

Soviel ich weiß, kann man mit read() nicht auf ein bestimmtes Zeichen zugreifen. Deshalb musst du wohl den Umweg über die Buffervariable aus dem Beispiel gehen.
Iluron - 37
Champion (offline)

Dabei seit 06.2008
8878 Beiträge

Geschrieben am: 25.10.2011 um 13:25 Uhr

Zitat von herbstkaelte:

War nicht an dich direkt gerichtet, eher an den Aufgabensteller, der hier natürlich nicht mit liest.

Soviel ich weiß, kann man mit read() nicht auf ein bestimmtes Zeichen zugreifen. Deshalb musst du wohl den Umweg über die Buffervariable aus dem Beispiel gehen.


Braucht man dafür keine Bibliothek?

Alle Programmierern eingesperrt, jede Software pantentiert. Jetzt merkt ihr: Anwälte proggen nicht.

herbstkaelte
Fortgeschrittener (offline)

Dabei seit 10.2011
48 Beiträge

Geschrieben am: 25.10.2011 um 13:31 Uhr

Sofern java.lang (da sind u.A. die elementaren Datentypen drin) nicht als Bibliothek zählt, nein. Soviel ich weiß wird die Bibliothek sowieso immer eingebunden, auch ohne explizite Nennung.
Der Buffer ist ein Bytearray, also Elementar.
  -1- -2- vorwärts >>>
 

Forum / Campusleben, Job und Karriere

(c) 1999 - 2025 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -