Codierung von Strichen

Kirby.exe

Top Contributor
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:

Java:
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

Top Contributor
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. :(
 

Kirby.exe

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

Code:
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

Top Contributor
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).
 

mihe7

Top Contributor
Ä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).
 

Neue Themen


Oben