charAt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich hab hier ein Programm, dass mir die Sozialversicherungsnummer überprüft... nur verstehe ich nicht, was das -48 bei charAt soll... kann mir das vielleicht jemand erklären?

Code:
import java.io.*;

public class Sozial 
{
	public static String getString()
	throws IOException
	{
		BufferedReader buffin = 
			new BufferedReader(
			new InputStreamReader(System.in)
		);
		String result = buffin.readLine();
		return result;
	}
	
	// SozialversicherungsNummer prüfen
	public static boolean checkSOZIAL(String sozial)
	{
		
		// Sonderzeichen durch einen leeren String
		// ersetzen
		
		sozial = sozial.replaceAll("-", "");
		sozial = sozial.replaceAll(" ", "");
		
		// Sozialversicherungsnummer-Nummer in einzelne Ziffern zerlegen
		
		int b1  = (sozial.charAt(0)-48);
		int b2  = (sozial.charAt(1)-48);
		int b3  = (sozial.charAt(2)-48);
		int b4  = 0;
		int b5  = (sozial.charAt(4)-48);
		int b6  = (sozial.charAt(5)-48);
		int b7  = (sozial.charAt(6)-48);
		int b8  = (sozial.charAt(7)-48);
		int b9  = (sozial.charAt(8)-48);
		int b10 = (sozial.charAt(9)-48);
		
		if(sozial.charAt(3)=='X' || sozial.charAt(3)=='x')
		{ 
			b4 = 10; 
		}
		else 
		{
			b4 = sozial.charAt(3)-48; 
		}
		
		// wirkliche Prüf-Ziffer errechnen
		
		int pruef = ((3*b1 + 7*b2 + 9*b3 + 0*b4 + 5*b5 + 8*b6 + 4*b7 + 2*b8 + 1*b9 + 6*b10) % 11 );
		
		// Mit der Prüfziffer der Sozialversicherungs-Nummer überprüfen
		
		return (b4==pruef); 
		
	}

	public static void main(String[] args)
	throws IOException
	{
		boolean correct = false;
		
		System.out.println("Pruefung der Sozialversicherungsnummer");
		System.out.println("============");
		while(correct == false)
		{
			System.out.println();
			System.out.print("Sozialv-Nr. > ");
			String sozial = getString();
			System.out.println();
			if(checkSOZIAL(sozial)==true) 
			{
				System.out.println("Das ist eine Sozialversicherungsnummer.");
				correct = true;
			}
			else
			{
				System.out.println("Das ist keine Sozialversicherungsnummer.");
				correct = false;
			}
		}
		// Programm beenden
		System.out.println();
		System.out.println("Please press Enter to continue...");
		getString();
	}

}
 

The_S

Top Contributor
charAt liefert einen Character zurück. Du benötigst aber den Integer "hinter" dem Charakter. Da der char in ASCII codiert ist, wird die beim cast in einen Integer nicht die jeweilige Zahl, die der char repräsentiert, zurückgeliefert, sondern der dazugehörige ASCII-Code. für 0 48, für 1 49, für 2 50, ... deshalb -48

ascii.gif
 
S

SlaterB

Gast
wenn ein char c '4' ist, dann ist er gleichzeitig int 52,
mit c - 48 erhälst du also int 4
 

Leroy42

Top Contributor
Code:
int b1  = (sozial.charAt(0) - '0');
ginge auch und wäre besser.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P String zu int konvertieren nur mit charAt Java Basics - Anfänger-Themen 8
G Java charAt Methode Java Basics - Anfänger-Themen 10
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
R Datentypen Datentyp String lenght & charAT Java Basics - Anfänger-Themen 4
A Wieso charAt(0) + charAt(3) = INT-Wert? Java Basics - Anfänger-Themen 5
S Methoden CharAt Java Basics - Anfänger-Themen 10
J Methode ".charAt()" einer "int" variable zuschreiben Java Basics - Anfänger-Themen 3
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
T Compiler-Fehler String auswerten mit CharAt Java Basics - Anfänger-Themen 2
F charAt-Methode liefert falsche Unicode-Werte Java Basics - Anfänger-Themen 8
G Umkehrung von String.charAt(x) Java Basics - Anfänger-Themen 5
B Frage zur methode CharAt Java Basics - Anfänger-Themen 11
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
J Fragen zu System.out.print und charAt Java Basics - Anfänger-Themen 3
C Api Methode charAt Java Basics - Anfänger-Themen 6
F Stringvergleich mit CharAt Java Basics - Anfänger-Themen 9
F Stringinhalte mit CharAt vergleichen Java Basics - Anfänger-Themen 8
M charAt(x) exists? Java Basics - Anfänger-Themen 3
D String#equals + String#charAt Java Basics - Anfänger-Themen 5
G charAT(i) eine Ziffer ? Java Basics - Anfänger-Themen 2
G Was bedeutet charAt()? Java Basics - Anfänger-Themen 5
S length und charAt Java Basics - Anfänger-Themen 8
S charAt() Java Basics - Anfänger-Themen 5
T charAt funktion mit einer string zeichenkette nutzen. WIE? Java Basics - Anfänger-Themen 13
B charAt() Problem Java Basics - Anfänger-Themen 6
S String / charAt + Fehlermeldung: char cannot be dereferenced Java Basics - Anfänger-Themen 16
D charAt-Problem Java Basics - Anfänger-Themen 5
D Probleme mit charAt Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben