Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie kann ich das dem Array aber anpassen?
das ist wichtig, weil die Größe des Arrays wird durch eine Länge eines eingebenen String bestimmt, sollte dynamisch sein
du postest unvollständigen Code, aus dem nicht erkennbar ist, welchen Wert i hat,
i ist jedenfalls nicht i1, welches von 0-11 läuft
die Java Virtual Machiner, die in den letzten 30 Jahren zuverlässig wer weiß wieviele Programme wer weiß wie oft überwiegend korrekt ausgeführt hat und dabei auch Unmengen falsche Array-Zugriffe richtig angezeigt hat,
sagt dir nun dass der Index zu groß ist,
was ist nun also anzunehmen, dass du in deinem recht fragwürdigen Programm doch den Durchblick hast und dein i korrekt gesetzt ist und die große JVM einen Fehler begangen hat,
oder liegt der Fehler nicht doch viel eher bei dir?
wenn du schon selber zu letzterem gekommen bist, du also weißt dass dein i doch 12 ist, durchaus aber nicht warum
was bezweckst du dann mit deinem Posting?
poste doch wenigstens mehr Code damit man erkennen kann wo i definiert wird und welche Werte es bekommt,
um dann dir zu sagen warum irgendwann 12 drin steht
Wie kann ich das dem Array aber anpassen?
das ist wichtig, weil die Größe des Arrays wird durch eine Länge eines eingebenen String bestimmt, sollte dynamisch sein
Arrays sind nicht dynamisch. Müssen Sie für Deinen Anwendungsfall aber höchswahrscheinlich auch garnicht sein. Du musst beim initialisieren des Arrays halt irgendwie intelligent die benötigte Größe kennen. Wenn die Größe des Arrays durch die Länge eines eingegebenen Strings bestimmt wird, dann geht z.B. folgendes:
Java:
String eingegebenerString = ...wo auch immer der herkommt...
int[] pos = new int[eingegebenerString.length];
Ich glaube auch nicht, dass eine dreifach verschachtelte for-Schleife plus dem if (also vier! Verschachtelungsebenen) für Dich leicht zu managen sind. Das ist sogar für erfahrene Programmierer zu schwer. Und deswegen machen die sowas auch nicht. Denk Dir einen sprechenden Namen für das aus, was in jeder einzelnen for-Schleife passiert und lager jede einzelne for-Schleife in eine Methode mit dem entspr. Namen aus und lass sie sich gegenseitig aufrufen. Dann kannst du die Methoden auch einzeln testen und findest Deinen Fehler auch schneller.
problem ist halt das ganze muss entschlüsseln.
gegeben wird ein Verschlüsselter Text und ein Codewort, und das soll über den Übichi entschlüsselt werdren, wir haben ahlt null Hilfe oder Informationen bekommen darüber...
ist aktuell eine Frage offen?
wenn es inhaltlich um noch nicht fertige Ver-/Entschlüsselung geht, musst du wohl etwas weiter ausholen,
Beispiele helfen auch
im geposteten Code ist das pos[] im Moment recht fragwürdig, es wird an jeden Index genau das Element aus dem zahlenlosung-Array geschrieben,
welches zwischendurch nicht geändert wird, wieso nicht pos weglassen und direkt mit zahlenlosung[i1] arbeiten?
(oder was es auch immer sein soll) nehmen.
daran wird das Programm mich gesunden, aber es fällt einfacher eine Diagnose zu stellen.
Es ist mal uralte Norm in Basic gewesen Integerzahlen mit I,J,K... und Realzahlen mit R,S,T,U... zu benennen.
Aus Platzgründen waren sie auch nur 1 Buchstaben lang.
Aber beides ist längst nicht mehr nötig und nicht mehr sinvoll und -> FÜHRT ZU FEHLERN.
Und zudem ist das ganze sehr verschachtelt, falsch eingerückt, und unmöglich formatiert.
Wie wärs mit, vielleicht tust du dich damit auch leichter:
(Geht ja in Eclipse mit ShiftAlt-R und ShiftCtrl-F hervorragend bequem.)
Dann erkennst du auch, dass dein pos[] gar keinen Zweck erfüllt. Da reicht eine einfache Int.
Java:
for (int teilIdx = 0; teilIdx < verTeil.length; teilIdx++) {
int pos[] = new int[zahlenlosung.length];
for (int losungIdx = 0; losungIdx < zahlenlosung.length; losungIdx++) {
pos[losungIdx] = zahlenlosung[losungIdx];
for (int keyIdx = 0; keyIdx < verschtext.length(); keyIdx++) {
int posTeilLaenge = pos[losungIdx] + teilIdx * laengeLosung;
if (posTeilLaenge < verTeil.length) {
rückgabe = rückgabe + verTeil[posTeilLaenge];
}
}
}
}
Edit: Aha, ist auch schon jemand anderem aufgefallen.
Folgendes macht exakt das selbe: