Codierung von Strichen

Diskutiere Codierung von Strichen im Hausaufgaben Bereich.
Kirby_Sike

Kirby_Sike

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_Sike

Kirby_Sike

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 :)
 
Kirby_Sike

Kirby_Sike

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_Sike

Kirby_Sike

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

mihe7

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

Kirby_Sike

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

mihe7

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

mihe7

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_Sike

Kirby_Sike

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

12733
 
mihe7

mihe7

Ä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).
 
Thema: 

Codierung von Strichen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben