Eingabe einscannen, ohne vorher einen Datentypen anzugeben?

Der_Julian

Mitglied
Tag nochmal.
Ist es möglich, Daten mit dem Scanner einzulesen, ohne dass man vorher einen Datentypen für die Eingabe festlegt?
Wir arbeiten nämlich gerade mit dem überladen von Methoden (Mehrere Methoden haben denselben Namen, werden jedoch trotzdem zugelassen, da das Programm sie daran unterscheidet, welcher Datentyp übergeben wird).
Das mit dem Überladen hab ich soweit hinbekommen. Allerdings habe ich es so eingerichtet, dass das Programm immer einen String einliest und ihn dann in einen entsprechend anderen Datentypen umwandelt, je nachdem, welcher Datentyp bearbeitet werden soll. Damit könnte ich den Code dramatisch verkürzen.
 
Der Scanner wertet ja auch nur "Text" aus. Also kannst Du einen ganzen String auslesen und dann die Eingabe auswerten. Aber dazu musst Du halt einmal festlegen, was das denn genau bedeutet.
300 kann halt tatsächlich die Zahl 300 sein. Aber evtl. ist es ja auch ein Name (So heisst z.B. ein Film), Das kann nur der Entwickler einer konkreten Anwendung wissen.

Und dies gilt generell. Oft werden Daten ja auch nicht als Text übergeben. Dann bekommt man eine Meng bytes und muss diese auswerten. Und da muss man dann auch wissen, was wie auszuwerten ist. Sind 4 Bytes zusammen eine Zahl? Mit oder ohne Vorzeichen? Wie sind die Bytes angeordnet (Big- oder Little Endian um da Stichworte zu nennen). Oder ist es eine Gleitkommazahl? Hat sie dann ein Vorzeichen? Wieviele Bytes oder Bits sind die Mantisse und wie viele Bytes oder Bits sind der Exponent? Oder ist es Text? Wenn ja: Wie ist dieser codiert? ASCI, spezielle Codepage, UTF-7/8/16/32, ....?

Wichtig ist, dass man hier immer klar sagt, was man wie erwartet bzw. ausgibt. Das kann nur sehr begrenzt herausgefunden werden. (Z.B. ein UTF-16 Dokument können wir erkennen, wenn wir normale Zeichen erwarten, denn dann hat man immer 00 xx 00 yy 00 zz mit xx, yy, und zz beliebige Byte-Werte. Aber das muss nicht so sein. Wenn da irgendwelche chinesischen Zeichen im Dokument sind, dann hat man diese 00 Werte nicht mehr ....
 

Zurück
Oben