如何在编码的邮件中保留空格?

时间:2017-01-17 22:16:02

标签: java string unicode spaces

我正在接收输入的消息,将每个字母的Unicode值加2,然后将其打印出来,我在单词之间的空格方面遇到了麻烦。如果这个短语是芝士披萨,它将打印出“ejggj”,然后停在该空间。我该如何解决这个问题?

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 

2 个答案:

答案 0 :(得分:1)

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

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

scan.next()方法将读取,直到遇到空格,无论是空格,制表符还是新行。你需要使用nextLine()来获得完整的输入。

Mohsen_Fatemi对你的算法是正确的。但这个问题与此无关。不要忽视他的意见。

答案 1 :(得分:0)

以这种方式更改你的代码,当你在String中有空格时你想要转义,所以当我们看到空格字符时,我已经添加了条件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; } } 我们跳过这一轮循环并转到下一次迭代

String nextLine = fileIn.nextLine();
arrayList.addAll(nextLine.split(","));//I use comma here, since I assume you will be separating your list with commas