Цикл не присваивает строке правильное значение - PullRequest
2 голосов
/ 17 ноября 2011

Есть небольшая часть моей программы, которая работает неправильно, и я просто не могу понять, почему

String KEY = "hello"
for (int h = 0; h < message.length(); h++)
{
    keyWord += KEY.charAt(h);
}

Как только я запускаю цикл, строка keyWord не содержит букв приветствия, которые должныно если я обойду его и просто использую KEY в моей программе, он будет работать нормально.

Может ли кто-нибудь пролить свет на то, что я делаю неправильно, пожалуйста?

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

Изменить

for (int h = 0; h < message.length(); h++)

на

for (int h = 0; h < KEY.length(); h++)

Вы пытаетесь добавить КЛЮЧ к ключевому слову ... поэтому вам нужно проверить его длину, а не какую-то другую строку.

0 голосов
/ 17 ноября 2011

Теперь я вижу, что вы пытаетесь сделать, вы создаете шифр.

public class Test {

     public static void main(String[] args){
           String key = "hello";
           String keyWord = "";
           String message = "asdfghj";
           for (int i = 0; i < message.length();i++)
           {
               keyWord += key.charAt(i %key.length());             
           }
           System.out.println(keyWord);
}
}

Для тех, кто не уверен, что оператор % или по модулю возвращает остаток от деления.Например, 4% 5 = 4, так как 4/5 оставляет остаток 4, потому что он входит в него 0 раз.Теперь 6% 5 = 1 при 6/5 = 1 R1.

0 голосов
/ 17 ноября 2011

Я предполагаю, что keyWord - это строка.Проблема в том, что когда вы делаете это:

keyWord += KEY.charAt(h);

Выражение KEY.charAt(h) имеет тип char, который является целочисленным значением.Когда вы добавляете целое число к строке, используя + (или +=), компилятор генерирует код для добавления строкового представления целочисленного значения.Он не добавляет самого персонажа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...