Also ich bin gerade etwas verwirrt xD Ich habe folgende Aufgabenstellung:
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:
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;
}
}