Как исправить плохое базовое декодирование? - PullRequest
0 голосов
/ 31 января 2019

Когда я использую этот простой метод кодирования / декодирования, у меня появляется небольшая ошибка.Когда пользовательский ввод через сканер имеет вид:
Строка: «Привет, меня зовут Майкл»
Код: «Pmttw (u? (Vium (q {(Uqkpimt» * *) *
) Расшифровка: «Здравствуйте, m7 имя Майкла»

его расшифровывается как 'y', теперь '7'

public static String basicEncode(String key) {
String result = "";
int lon = key.length();
char d;
for(int i = 0; i < lon; i++) {
    d = key.charAt(i);
    d += 10;
    result += d;
}

return result;
}

public static String basicDecode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for(int i = 0; i < lon; i++) {
        d = key.charAt(i);
        d -= 10;
        result += d;
    }

    return result;
}

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Если вы хотите получить это:

Код: «Pmttw (u? (Vium (q {(Uqkpimt»)

для вашего кода, тогда

public static String basicEncode(String key) {
String result = "";
int lon = key.length();
char d;
for (int i = 0; i < lon; i++) {
  d = key.charAt(i);
  d += 8; //CHANGED TO 8
  result += d;
}

return result;

}

То есть путем ввода «Здравствуйте, меня зовут Майкл» в качестве строки для метода basicEncode.

Можете ли вы сказать мне, какова цель этой программы? Какой метод подходит дляисходная строка для размещения в?

0 голосов
/ 31 января 2019

Может быть, что-то с UTF-8 на моем компьютере, потому что когда я выполнял этот же код на другом компьютере, он работал нормально.

Как я могу проверить, что не так?

Я знаю, что когда я хочу изменить количество позиций на менее чем 8, это работает хорошо, но почему бы и нет, если это 10 или больше?

0 голосов
/ 31 января 2019

В вашем коде отсутствует 10 в основном коде.Кроме этого не вижу вашей проблемы.

  public static void main(String args[]) {
    String in = "Hello my name is Michael";
    String encoded = basicEncode(in);
    String decoded = basicDecode(encoded);

    System.out.println(in);
    System.out.println(encoded);
    System.out.println(decoded);
  }

  public static String basicEncode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for (int i = 0; i < lon; i++) {
      d = key.charAt(i);
      d += 10;
      result += d;
    }

    return result;
  }

  public static String basicDecode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for (int i = 0; i < lon; i++) {
      d = key.charAt(i);
      d -= 10;
      result += d;
    }

    return result;
  }

Это дает следующий результат:

Hello my name is Michael
Rovvy*w?*xkwo*s}*Wsmrkov
Hello my name is Michael
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...