überschneidende Char-Arrays, zu einem Längeren verbinden

suizi

Mitglied
Hallo Leute. Ich bin gerade Am Tüfteln wie ich 2 Arrays verbinde.
Im Konkreten geht es um folgendes:
Ich bekomme beim Zusammenfügen diese Meldung.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20
at ibanCalc.main(ibanCalc.java:40)
Und ich kann beim besten nicht verstehen, warum mein Array kürzer wird. :bahnhof:
Ich setze im ersten Schritt ein Array mit 20 Stellen einem Array mit 22 gleich. Die zwei scheinen aber dann wie verschwunden... Oder irre ich mich da, beim Verhalten von Arrays in diesen Situationen?
lg Thomas

PS: Thema des ganzen Programms ist eine IBAN Nummer auf ihre Gültigkeit zu kontrollieren.
International Bank Account Number - Wikipedia, the free encyclopedia

Java:
public class ibanCalc {

	public static void main(String[] args) {
		System.out.println("Input 20digit IBAN Code: ");
		//Variables
		char zwSpeicher[] = new char [6];
		char endArray[] = new char [20];
		char backupArray[] = new char [22];
		String str="AT983200000006137564";
	//Get the First 4 digits
		endArray = str.toCharArray();
		System.out.print("ArrayKontrolle:\t\t\t");
		System.out.println(endArray); 				//Control
	//Die ersten 4 Zeichen herausnehmen
		for(int i=0; i<4; i++){
			zwSpeicher[i]=endArray[i];
		}
		//zwSpeicher2=zwSpeicher;					//zwSpeicher sichern
	//Alle Zeichen nach vorne Rücken
		for(int zaehler=0; (zaehler+4)<20; zaehler++){
			endArray[zaehler]=endArray[zaehler+4];
		}
		System.out.print("Verrücktes-Array-Kontrolle:\t");
		System.out.println(endArray);				//Control
	
	// Buchstaben in Zahlen umwandeln und 0 hinzufügen
		
		int a, b;
		a=(int)zwSpeicher[0]-55;
		b=(int)zwSpeicher[1]-55;
		zwSpeicher = ("" + a + b + '0' + '0').toCharArray();
		System.out.print("Bchstb in Zahlen convert array:\t");
		System.out.println(zwSpeicher);
	
	//Arrays zusammenfügen
		backupArray = endArray ;
		int zaehler2=16;
		while(zaehler2<22){
			backupArray[zaehler2]=zwSpeicher[zaehler2-16];
			zaehler2++;
			System.out.println(backupArray);
		}
		
		
		System.out.print("Array Kontrolle vor mod.:\t");
		System.out.println(backupArray);				//Control
		
		System.out.println("Ende");	
	}

}
 
Zuletzt bearbeitet:

Phash

Top Contributor
wenn du ein array kopierst, musst du das für jede Zelle machen.

Was du machst, ist lediglich die Referenz von endarray zuweisen.

du müsstest anstatt

Java:
backupArray = endArray ;
eher:
Java:
for(int i =0; i < endArray.length; i++){
backupArray[i] = endarray[i];

}
machen


Bei sowas würde ich dir aber eher eine Liste empfehlen ... oder ein Set
 

suizi

Mitglied
wenn du ein array kopierst, musst du das für jede Zelle machen.
Was du machst, ist lediglich die Referenz von endarray zuweisen.
Ach ja stimmt... da war was mit den Referenzen. :oops: Davor haben die Prof's oft gewarnt und ich bin wieder reingetappt. :bloed:
Bei sowas würde ich dir aber eher eine Liste empfehlen ... oder ein Set
Von dem hab ich leider noch nichts gehört. :(
Ich kann nur soviel sagen: In der Übungsangabe steht, dass wir das mit Arrays erledigen sollen. Vermutlich, da wir gerade mit letzteren begonnen haben.
 

suizi

Mitglied
Geht das: wenn ich die Referenz zuweise und das Anfangsarray gleich um 2 länger mache?

Edit: vergesst es... war ein Denkfehler meinerseits!
 
Zuletzt bearbeitet:

suizi

Mitglied
also ich habe folgendes Array: ...
char calcArray[] = new char [22];
mit dem dynamischen Inhalt:
CalcArray: 12345678101500
Ich will das Array in eine Long umwandeln. dazu zuerst in einen STring und danach in eine long Zahl.
Java:
...
// Convert To Double
		String convertToLong= new String(calcArray);
		System.out.println("String-Result: \t\t\t" + convertToLong);
		long calcModulo = (long) Long.parseLong(convertToLong);
		System.out.println("Double-result: \t\t\t" + calcModulo);
...

Fehler in Zeile 5!
Ich bekomme aber immer einen Fehler. Liegt es daran, dass der String eventuell noch immer 22 Zeichen enthält. Weil long müsste die zahl eigentlich aufnehmen können (2^63-1)
Der Fehler ist mit digit<0 begründet.
Code:
Exception in thread "main" java.lang.NumberFormatException: For input string: "12345678101500"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Long.parseLong(Long.java:441)
	at java.lang.Long.parseLong(Long.java:483)
	at ibanCalc.main(ibanCalc.java:66)
 
Zuletzt bearbeitet:

HarleyDavidson

Bekanntes Mitglied
Zu Post #5: Verzettel dich jetzt nicht in verwirrende Strategien. KISS ist hier das Zauberwort: Keep it Small and Simple.

Wenn es auch garnicht funktioniert, dann geh den Programmablauf auf einem Blatt Papier durch. Gerade bei der Verwendung von Arrays, ihren Indizes und und und vertut man sich immer mal gerne.

Die Version hier funktioniert jetzt mal ...

Java:
public class ibanCalc
{

    public static void main( String[] args )
    {
        System.out.println( "Input 20digit IBAN Code: " );
        //Variables
        char zwSpeicher[] = new char[6];
        char endArray[] = new char[20];
        char backupArray[] = new char[26];
        String str = "AT983200000006137564";
        //Get the First 4 digits
        endArray = str.toCharArray();
        System.out.print( "ArrayKontrolle:\t\t\t" );
        System.out.println( endArray );               //Control
        //Die ersten 4 Zeichen herausnehmen
        for ( int i = 0; i < 4; i++ )
        {
            zwSpeicher[i] = endArray[i];
        }
        //zwSpeicher2=zwSpeicher;                   //zwSpeicher sichern
        //Alle Zeichen nach vorne Rücken
        for ( int zaehler = 0; (zaehler + 4) < 20; zaehler++ )
        {
            endArray[zaehler] = endArray[zaehler + 4];
        }
        System.out.print( "Verrücktes-Array-Kontrolle:\t" );
        System.out.println( endArray );               //Control

        // Buchstaben in Zahlen umwandeln und 0 hinzufügen

        int a, b;
        a = (int) zwSpeicher[0] - 55;
        b = (int) zwSpeicher[1] - 55;
        zwSpeicher = ("" + a + b + '0' + '0').toCharArray();
        System.out.print( "Bchstb in Zahlen convert array:\t" );
        System.out.println( zwSpeicher );

        //Arrays zusammenfügen
        for ( int i = 0; i < endArray.length; i++ )
        {
            backupArray[i] = endArray[i];
        }
        for ( int i = 21; i < 27; i++ )
        {
            backupArray[i-1] = zwSpeicher[i-21];
            System.out.println( backupArray );
        }


        System.out.print( "Array Kontrolle vor mod.:\t" );
        System.out.println( backupArray );                //Control

        System.out.println( "Ende" );
    }
}

Laut der Wikiseite allerdings müssen hier die zwei Ziffern übernommen werden und nicht zwei Nullen (Zeile 35 in meinem Code). Ansonsten sollte dir der Code mal als Anhaltspunkt dienen.
 
Zuletzt bearbeitet:

DrZoidberg

Top Contributor
Ich würde das so machen.
Zuerst ersetze ich die Kontrollziffern gegen korrekte und überprüfe dann noch einmal ob die IBAN jetzt in Ordnung ist.

Java:
import java.math.BigInteger;

public class IBanCalc
{   
    private static String normalize(String iban) {
        iban = iban.replaceAll("\\s", "");
        if(iban.length() != 20 || !iban.matches("[A-Z]{2}[A-Z0-9]+")) throw new RuntimeException("invalid IBAN");
        return iban;
    }
    
    private static BigInteger convertToInt(String iban) {
        iban = iban.substring(4) + iban.substring(0, 4);
        StringBuilder sb = new StringBuilder();
        for(char c: iban.toCharArray()) {
            if(c >= 'A' && c <= 'Z') sb.append(c - 'A' + 10);
            else sb.append(c);
        }
        return new BigInteger(sb.toString());
    }
    
    private static String replaceCheckDigits(String iban, String digits) {
        if(digits.length() != 2) throw new RuntimeException();
        return iban.substring(0, 2) + digits + iban.substring(4);
    }
    
    private static String addCheckDigits(String iban) {
        iban = normalize(iban);
        BigInteger bi = convertToInt(replaceCheckDigits(iban, "00"));
        int cd = 98 - bi.mod(new BigInteger("97")).intValue();
        return replaceCheckDigits(iban, cd < 10 ? "0" + cd : "" + cd);
    }
    
    private static boolean isValid(String iban) {
        iban = normalize(iban);
        BigInteger bi = convertToInt(iban);
        return bi.mod(new BigInteger("97")).intValue() == 1;
    }
 
    public static void main( String[] args )
    {
        System.out.println( "Input 20digit IBAN Code: " );
        String str = "AT983200000006137564";
        
        System.out.println(str);
        System.out.println("valid = " + isValid(str));
        str = addCheckDigits(str);
        System.out.println(str);
        System.out.println("valid = " + isValid(str));
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
D 2D Char Array into String Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W char über die Konsole? Java Basics - Anfänger-Themen 7
C char c Java Basics - Anfänger-Themen 13
D String und char in String speichern Java Basics - Anfänger-Themen 5
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
P Methoden Namen trennen mit .substring(), char.At(), .lenght() Java Basics - Anfänger-Themen 8
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
A Datentyp char Java Basics - Anfänger-Themen 27
A Char und modulo Java Basics - Anfänger-Themen 8
A char array wird überschrieben Java Basics - Anfänger-Themen 6
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
D Datentypen Char deklaration Java Basics - Anfänger-Themen 4
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
I char Array to String Java Basics - Anfänger-Themen 3
C (char) Array einlesen Java Basics - Anfänger-Themen 8
J Java char.at() Probelm Java Basics - Anfänger-Themen 12
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
H char-Array Java Basics - Anfänger-Themen 22
M Die länge von char Java Basics - Anfänger-Themen 6
T Methoden char wird nicht ausgegeben Java Basics - Anfänger-Themen 3
R Fehler bei ASCII Char zu Int Umwandlung Java Basics - Anfänger-Themen 2
C Methoden String in char Array Java Basics - Anfänger-Themen 3
T Datentypen char als Buchstaben statt als Zahl ausgeben Java Basics - Anfänger-Themen 4
kokojamboo92 char mehrfach ausgeben.. Java Basics - Anfänger-Themen 2
T Erste Schritte Char 'Anführungszeichen' Tastaturkürzel Java Basics - Anfänger-Themen 1
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
C Compiler-Fehler from int to char Java Basics - Anfänger-Themen 2
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
T Object zu Char zu String Java Basics - Anfänger-Themen 6
W Char Array bearbeiten Java Basics - Anfänger-Themen 6
A Char-Array erstellen Java Basics - Anfänger-Themen 35
D Hilfe bei int wert von char Java Basics - Anfänger-Themen 7
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
Z char Array unbekanntes Zeichen selbstständig anlegen Java Basics - Anfänger-Themen 6
M Bestimmen, wie oft ein Char in einem Array vorkommt Java Basics - Anfänger-Themen 2
BuTTerBroTHDx Char Wert in int casten ? Java Basics - Anfänger-Themen 4
D Variablen Variable char vergleichen Java Basics - Anfänger-Themen 5
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
C char array-positionstausch Java Basics - Anfänger-Themen 6
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
C String-zaehleZeichen(String str,char[]c) Java Basics - Anfänger-Themen 9
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Best Practice String aufbau - Char Array oder Anhängen Java Basics - Anfänger-Themen 11
S For Schleife Char Array Java Basics - Anfänger-Themen 1
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4
K PasswordField auslesen und in char speichern Java Basics - Anfänger-Themen 2
L Frage zum Zeichensatz Char Java Basics - Anfänger-Themen 2
L Frage zum Typ Char (Zeichensatz) Java Basics - Anfänger-Themen 8
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
B char Array mit ints Java Basics - Anfänger-Themen 7
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
X Compiler-Fehler Possible loss of precision bei addition von int und char Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
D Methode die statt char[] ein "null" zurück gibt Java Basics - Anfänger-Themen 8
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
R Char wird in System.out.print(); nicht ausgegeben Java Basics - Anfänger-Themen 6
J Char-Rechnen Java Basics - Anfänger-Themen 8
E Input/Output convert string to two dimensional char and output = matrix Java Basics - Anfänger-Themen 2
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
M char Array füllen Java Basics - Anfänger-Themen 2
H ArrayList mit char- Array befüllen Java Basics - Anfänger-Themen 12
M Warum ist char a + char b 196 Java Basics - Anfänger-Themen 4
J Datentypen Cast von int zu char führ zu 'Sonderzeichen' Java Basics - Anfänger-Themen 2
M Erste Schritte konvertierung von int zu char Java Basics - Anfänger-Themen 3
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
A Char Bytes Umwandlung und Darstellung Java Basics - Anfänger-Themen 3
R Input/Output einzelnes char aus .txt lesen Java Basics - Anfänger-Themen 11
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
M String in char-weise vergleichen und ausgeben Java Basics - Anfänger-Themen 5
V while verlassen, char Java Basics - Anfänger-Themen 2
S Datentypen Ein String in ein Char und ein Double wandeln Java Basics - Anfänger-Themen 2
A Char to String Java Basics - Anfänger-Themen 5
R Erste Schritte Rechnenoperationen mit byte, short und char Java Basics - Anfänger-Themen 8
W Char als Int speichern Java Basics - Anfänger-Themen 10
W Variablen Rechnen mit "char" Java Basics - Anfänger-Themen 2
G Char und Strings Java Basics - Anfänger-Themen 21
K char Einlesen und Auswerten Java Basics - Anfänger-Themen 9
N KeyStrok und char Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben