如何在我的编码消息中保留空格?

How do I keep spaces in a my encoded message?

我正在获取输入的消息,将每个字母的 Unicode 值加 2,然后将其打印出来 我在包含单词之间的 space 时遇到了问题。如果短语是奶酪披萨,它会打印出 "ejggj",然后在 space 处停止。我该如何解决这个问题?

package exercises;
import java.util.Scanner;
public class Ex10 {

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
                //Ask for message
                System.out.println("Enter a string: ");
                String message = scanner.next();

                char[] array = message.toCharArray();

                //Encode message
                for(int i = 0; i < array.length; i++)
                {
                    char letter; 
                    letter = array[i];
                    if (array[i] =='y') 
                    {
                        array[i] = 'a';
                    }
                    else if (array[i] == 'z')
                    {
                        array[i] = 'b';
                    }
                    else if (array[i] == letter)
                    {
                        letter += 2;
                        array[i] = letter;
                    }
                    else
                    {
                        letter = ' ';
                    }
                }
                //Give back encoded message
                System.out.print("Encoded message: ");
                System.out.println(array);
        }//main
    }//class 

以这种方式更改您的代码,当您的字符串中有 space 时您想转义,所以当我们看到 space 时我添加了一个条件 if(array[i]==' ') continue;字符我们跳过这一轮循环并进入下一次迭代

for(int i = 0; i < array.length; i++) {
       if (array[i] =='y'){
            array[i] = 'a';
       }else if (array[i] == 'z'){
             array[i] = 'b';
       }else{
             if(array[i]==' ') continue;
             array[i] += 2;
       }
}

Mohsen_Fatemi 部分错误。在这个问题的范围内他是完全错误的。

您关于句子缺失部分的问题不是来自您的循环和其中的条件,而是来自您对扫描仪的使用。

scanner.next() 方法将读取直到遇到白色 space,无论它是 space、制表符还是新行。您需要使用 nextLine() 来获得完整的输入。

Mohsen_Fatemi 关于你的算法是正确的。但这个问题不是关于它的。不过不要忽视他的意见。