Java For Loop игнорирует i Position, когда буква массива одинакова - PullRequest
0 голосов
/ 02 ноября 2018
import java.util.Scanner;
import java.lang.*;

public class testing {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        char[] engArray = {'A','B','C','D','E','F','G','H','I'};
        String stringEngArray = String.valueOf(engArray);

        System.out.println("Text input");
        String input2 = input.nextLine().toUpperCase();

        int inputedOffset = 4;

        char[] finalArray = inpute2.toCharArray();

        for (int i = 0; i < inputedText.length(); i++) {
            int arrayPosition = inpute2.indexOf(inputedText.charAt(i));
            int engPosition = stringEngArray.indexOf(inputedText.charAt(i));
            int test = (arrayPosition % inputedOffset);
            int newTest = engPosition+test;
            finalArray[i] = engArray[newTest];

        }
        String output = new String(finalArray);
        System.out.println(output);

    }
}

Я пытаюсь изменить введенный пользователем текст, чтобы выполнить базовое шифрование.

Когда я вхожу в abcd или tesla или world, вывод работает как положено и меняется с aceg на tfuoa на wptod Проблема возникает, когда я ввожу aaaa или aabbcc или вообще когда письмо повторяется в тексте. Во второй раз цикл for находит ту же букву, он просто использует позицию массива 1-й прочитанной аналогичной буквы.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы используете indexOf() для получения позиции массива. Это всегда будет возвращать позицию первого вхождения этого символа в строке.
Вы можете просто использовать i в качестве позиции массива.

0 голосов
/ 02 ноября 2018

Это происходит потому, что inputedText.indexOf(inputedText.charAt(i));, это то, что заставляет его возвращать тот же индекс, так как он просто получит первое вхождение a, которое будет одинаковым для каждого a символа.

Вы пытаетесь получить позицию массива, но почему вы делаете это таким образом, когда позиция массива уже является переменной i?

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    char[] engArray = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
            'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    String stringEngArray = String.valueOf(engArray);

    System.out.println("Text input");
    String inputedText = input.nextLine().toUpperCase();

    int inputedOffset = 4;

    char[] finalArray = inputedText.toCharArray();

    for (int i = 0; i < inputedText.length(); i++) {
        int engPosition = stringEngArray.indexOf(inputedText.charAt(i));
        int test = (i % inputedOffset);
        int newTest = engPosition + test;
        finalArray[i] = engArray[newTest];

    }
    String output = new String(finalArray);
    System.out.println(output);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...