Wert Char einlesen

Java:
public static char char_console_in()
{
	String s = "";
	boolean result = false;
	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	try
	{
		s = in.readLine();
	}
	catch(IOException e)
	{	
	System.out.println("Eingabe fehlerhaft!" + e);
	}
	return s.charAt(0);
}
Die ZEichen sollen einzeln ausgelesen werden für eine Berechnung?
Schleife?

Wie lautet den genau die Fragestellung? Ist obige Funktion vorgegeben? Sollen alle 4 Zeichen mit genau dieser Funktion eingelesen werden? Wenn diese (seltsame) Funktion vorgegeben ist, musst Du Sie in der Tat 4 mal in einer Schleife aufrufen und die Eingaben jeweils auf Plausibilität prüfen.

Warum ist die Funktion statisch? Was soll die boolsche Variable 'result', die niemals verwendet wird?

Ein wenig Aufklärung könnte die Konfusion in diesem Thread bereinigen.....

Gruss
 
Ich lese mit der Routine unten einen Character (Hexadezimal) ein.

System.out.println("Geben Sie den ersten Wert der 4 stelligen Hexadezimalen ein:");
eing1 = Console.console_in_char();

Wenn die Eingabe eine Ziffer ist (0 bis 9) so wird der umgerechnete wert für die
Eingabe angegeben. Für die Eingabe 0 wird der Wert 48 zurückgegeben statt der
Wert 0.

Es müßte möglich sein den Eingabewert in einen Int Wert zu übernehmen, aber wie?
 
Es müßte möglich sein den Eingabewert in einen Int Wert zu übernehmen, aber wie?

Ich versteh immernoch nicht genau, was du vor hast. Du willst jetzt aus jeder einzelnen Ziffer einen Integer machen? Wozu? Ich dachte die eingegebene Zahl wäre 4-stellig ... oder sind das doch 4 verschiedene Zahlen?

Aber eigentlich hat Anime-Otaku ja die Lösung auch schon gesagt. Ich wäre jetzt auch (so hab ich's bisher verstanden) hingegangen und hätte erstmal aus den 4 Charakteres einen String gebaut (mein Gott, wie umständlich ...). Danach kannst du einfach hingehen und sagen
Code:
int gesuchteZahl = Integer.parseInt(deinZusammengebastelterString, 16);
und schon hast du aus der Hex-Zahl eine Integer-Zahl gemacht.
 
Ja es gibt 4 einzelne Eingabewerte vom Typ char Ich möchte nach der Eingabeprüfen ob es sich um einen Integer (0 - 9) handelt der dann direkt in die Formel wandert handelt oder ob es sich um einen Buchstaben (A-F) handelt den ich noch entsprechend einen Wert zuweisen muss.
 
Hmm ... wie wäre es denn mit irgendwie sowas:
Code:
public static int charToInt(Character c) {
if ((c >= '1') && (c <= '9')) 
        return Integer.parseInt(""+c);
c = c.toUpperCase();
switch (c) {
   case 'A' : return 10;
   case 'B' : return 11;
   case 'C' : return 12;
   case 'D' : return 13;
   case 'E' : return 14;
   case 'F' : return 15;
   case '0' : return 48;
}

return 99; //oder sonst was, sollte ja nicht vorkommen können.
}

Ist jetzt aber nur mal eben so hingeschmissen, also nicht getestet oder sonst was :)
 
Ich habe denn ganzen Kern meiner Aufgabe mal zusammengestellt zum Thema
einlesen eines char und wandeln.


/**
* Beschreiben Sie hier die Klasse Hexa.
*
* @author (Michael Fisel)
* @version (06.07.2007)
*/
import ConsoleInOut.*;
public class Hexa
{
public static void main (String args[])
{
char eing1, eing2, eing3, eing4;
int z = 0, x = 0, y = 0, w = 0, q = 0, t = 0 ;
System.out.println("Geben Sie den ersten Wert der 4 stelligen Hexadezimalen ein:");
eing1 = Console.console_in_char();
System.out.println("Geben Sie den zweiten Wert der 4 stelligen Hexadezimalen ein:");
eing2 = Console.console_in_char();
System.out.println("Geben Sie den dritten Wert der 4 stelligen Hexadezimalen ein:");
eing3 = Console.console_in_char();
System.out.println("Geben Sie den vierten Wert der 4 stelligen Hexadezimalen ein:");
eing4 = Console.console_in_char();

switch (eing1)
{
case 'a': z = 10; break;
case 'b': z = 11; break;
case 'c': z = 12; break;
case 'd': z = 13; break;
case 'e': z = 14; break;
case 'f': z = 15; break;
case 'A': z = 10; break;
case 'B': z = 11; break;
case 'C': z = 12; break;
case 'D': z = 13; break;
case 'E': z = 14; break;
case 'F': z = 15; break;
default: z = eing1;break;
}

switch (eing2)
{
case 'a': x = 10; break;
case 'b': x = 11; break;
case 'c': x = 12; break;
case 'd': x = 13; break;
case 'e': x = 14; break;
case 'f': x = 15; break;
case 'A': x = 10; break;
case 'B': x = 11; break;
case 'C': x = 12; break;
case 'D': x = 13; break;
case 'E': x = 14; break;
case 'F': x = 15; break;
default: x = eing2;break;
}

switch (eing3)
{
case 'a': y = 10; break;
case 'b': y = 11; break;
case 'c': y = 12; break;
case 'd': y = 13; break;
case 'e': y = 14; break;
case 'f': y = 15; break;
case 'A': y = 10; break;
case 'B': y = 11; break;
case 'C': y = 12; break;
case 'D': y = 13; break;
case 'E': y = 14; break;
case 'F': y = 15; break;
default: y = eing3;break;
}

switch (eing4)
{
case 'a': w = 10; break;
case 'b': w = 11; break;
case 'c': w = 12; break;
case 'd': w = 13; break;
case 'e': w = 14; break;
case 'f': w = 15; break;
case 'A': w = 10; break;
case 'B': w = 11; break;
case 'C': w = 12; break;
case 'D': w = 13; break;
case 'E': w = 14; break;
case 'F': w = 15; break;
default: w = eing4;break;
}
// 16*16*16*12+16*0+16*0+1
q = ((16*16*16*z)+(16*x)+(16*y)+w);

System.out.println("Dezimal Zahl : " + z);
System.out.println("Dezimal Zahl : " + x);
System.out.println("Dezimal Zahl : " + y);
System.out.println("Dezimal Zahl : " + w);

System.out.println("Dezimal Zahl : " + q);
}
}

vielleicht kann mir einer einen Wink geben wie ich zum Beispiel die
Eingabe eing1 überprüfe ob es eine Ziffer (0-) ist und der Wert der Ziffer in
z übergeben werden kann, oder ob eing1 ein Buchstabe (a-F) ist und die ziffer z
mit dem wert der Switch anweisung übergeben wird.
 
Also ein paar Anmerkungen:

Warum benutzt du keine Methoden? Anstatt 4 mal ne ellenlange Switch-Anweisung zu machen hätte auch eine in einer extra Methode gereicht (so in der Art wie die aus meinem vorherigen Post).

default: z = eing1 Das ist ein böser Fehler. Angenommen du gibst eine 1 ein. Eins hat den ASCII-Code 49, somit wäre z hinterher gleich 49. Du willst aber z = 1 raushaben. Abhilfe gibt zum Beispiel die Integer.parseInt-Methode ... siehe mein vorheriger Post.

Von den ganzen Sachen in der Switch-Anweisung kannst du dir die Hälfte sparen wenn du zum Beispiel vorher eing1 = eing1.toUpperCase() machst. Dafür musst du aus dem char zwar einen Charakter machen, aber das sollte kein Problem sein.
 
Zuletzt bearbeitet:
Zurück