# Codierung von Strichen



## Kirby.exe (9. Dez 2019)

Also ich bin gerade etwas verwirrt xD Ich habe folgende Aufgabenstellung:


> Schreiben Sie ein Programm, welches als Kommandozeilenparameter einen String übergeben bekommt, welcher einen Zielcode darstellt. Dieser besteht nur aus Leerzeichen () und senkrechten Striche (|). Jeweils 5 Zeichen gehören zu einem Block und jeder Block codiert eine Ziffer. Somit gibt es insgesamt 6 Blöcke, wobei der letzte Block die Prüfziffer beinhaltet. Die Blocke selbst sind durch einen senkrechten Strich voneinander getrennt und nach dem letzten Block (der Prüfziffer) kommt ebenfalls ein senkrechter Strich. Ihre Aufgabe ist es die Ziffern zu ermitteln und anhand der Prüfziffer diese auf Korrektheit zu überprüfen. Wenn die Ziffern nicht korrekt sind, soll Falscher Code ausgegeben werden, ansonsten sollen die fünf Ziffern (ohne Prüfziffer) in umgekehrter Reihenfolge hintereinander weg (d.h. in einer Zeile) ausgegeben werden.



Das Problem ist mein Code führt den ersten Schleifen-Durchlauf korrekt durch und dann gibt er immer dass Ergebnis des ersten Durchlauf an die Temporäre Variable weiter, ich habe das Gefühl ich sehe den Wald vor lauter Bäumen nicht.
Mein Code: 


```
import java.util.Arrays;

public class LinearCode {

    public static void main(String[] args) {
        String s = "| || |  ||||  |||| || || | ||| || ||"; //Richtige PLZ
        System.out.println(calc(s));
        
    }
    
    public static String calc(String s) {
        String result = "";
        String wrong = "Falscher Code";
        int test = 0; //modulo-check
        int temp = 0; //temporär
        int t = 0; //counter for Checking Array
        int Counter = 0; // Counter for the Final Array
        int [] finalArray = new int[s.length()];
        
        
        String[] parts = s.split("(?<=\\G.{6})");
        for(int i=0; i<parts.length; i++) {
          parts[i] = parts[i].substring(0, 5);
        }
        
        int [] check = {0,1,2,4,7}; //Checking Array
        
        for(int i = 0; i < parts.length; i++) {
            System.out.println("I-Counter: " + i);
            String run = parts[i];
            for(int j=0; j < run.length(); j++) {
                if(!(run.charAt(j)== ' ')) {
                    System.out.println("Beginnung Counter: " + t);
                    t++;
                    System.out.println("IF: " + t);
                }else {
                    if(t<check.length) {
                        temp += check[t];
                        t++;
                        System.out.println("ELSE: " + t);
                    }else {
                        break;
                    }
                }
            }
            System.out.println("Temporary: " + temp);
            if(temp == 11) { temp = 0;}
            
            finalArray[Counter] = temp;
            Counter++;
            
        }
        finalArray = Arrays.copyOf(finalArray, Counter);
        for(int i = 0; i < finalArray.length-1; i++) {
            test += finalArray[i];
        }
        test = (10-(test%10));
        if(test == finalArray[finalArray.length-1]) {
            for(int i = finalArray.length-1; i > 0; i--) {
                result += finalArray[i];
            }
            return result;
        }

        return wrong;
    }
    

}
```


----------



## Kirby.exe (10. Dez 2019)

Nevermind, habs selber gelöst


----------



## mihe7 (10. Dez 2019)

Schöne Aufgabe, die man auf sehr viele Weisen lösen kann.


----------



## Kirby.exe (10. Dez 2019)

mihe7 hat gesagt.:


> Schöne Aufgabe, die man auf sehr viele Weisen lösen kann.


Das ist wohl war, ich war einfach zu blöd und habe nicht gemerkt, dass ich beim falschen String geprüft habe xD

Jetzt fühle ich mich befreit und doch irgendwie verarscht, dass ich mich unnötig lange mit dem Fehler geplagt habe


----------



## mihe7 (10. Dez 2019)

Kirby_Sike hat gesagt.:


> Jetzt fühle ich mich befreit und doch irgendwie verarscht, dass ich mich unnötig lange mit dem Fehler geplagt habe


Du kannst ja mal schauen, ob Du mit einer besseren Aufteilung des Codes den Fehler auch gemacht hättest.


----------



## Kirby.exe (10. Dez 2019)

mihe7 hat gesagt.:


> Du kannst ja mal schauen, ob Du mit einer besseren Aufteilung des Codes den Fehler auch gemacht hättest.


Ich probiere es mal, ich hätte mal ne Frage, aus irgendeinem Grund funktioniert der Debugger für Eclipse bei JDK 13.0.1 ja noch nicht, mir wurde JDK 11 empfohlen, jedoch finde ich dass leider nicht für MacOS. Ich habe zwar eins gefunden, jedoch wird das nicht als Java Runtime Environment gesehen.


----------



## mihe7 (10. Dez 2019)

Findest Du unter https://adoptopenjdk.net/ kein geeignetes für macOS?


----------



## Kirby.exe (10. Dez 2019)

Dankeschön


----------



## Kirby.exe (10. Dez 2019)

So habs eingefügt jetzt bekomme ich jedoch bei jedem Programm dass ich geschrieben habe diesen wundervollen Fehler  gibts da einen Way-around?


```
Fehler: Beim Laden der Klasse Glaettung ist ein LinkageError aufgetreten
    java.lang.UnsupportedClassVersionError: Glaettung has been compiled by a more recent version of the Java Runtime (class file version 56.0), this version of the Java Runtime only recognizes class file versions up to 55.0
```


----------



## mihe7 (10. Dez 2019)

Du musst Projekt neu bauen (clean and build), damit alle Klassen mit der 11er übersetzt werden.


----------



## Kirby.exe (10. Dez 2019)

heißt neues Projekt und alle Klassen einmal copy & paste reinzimmern? xD


----------



## mihe7 (10. Dez 2019)

Nein, nein. Einfach nur unter Project den Punkt Clean ausführen. Sollte in Eclipse genügen.


----------



## Kirby.exe (10. Dez 2019)

Nope selbe Fehler Meldung xD


----------



## mihe7 (10. Dez 2019)

Hast Du jetzt Parallel 11 und 13? Dann musst Du ggf. noch irgendwo in den Projekteinstellungen auf 11 umstellen (oder Du führst das Projekt wieder mit der 13 aus).


----------



## Kirby.exe (10. Dez 2019)

nope also ich habe 11 hinzugefügt und für mein Projekt auf 11 umgestellt.


----------



## mihe7 (10. Dez 2019)

Änder mal noch auf der "Compiler page" (unten im Bild "Conflicting compliance settings...")) das Level von 12 auf 11. Danach ggf. nochmal Clean. Vielleicht hilft das. (Sorry, ich nutze kein Eclipse, insofern ist da meine Hilfe begrenzt).


----------



## Kirby.exe (10. Dez 2019)

Jetzt gehts danke  Bist ein Held


----------

