如何在我的编码消息中保留空格?
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 关于你的算法是正确的。但这个问题不是关于它的。不过不要忽视他的意见。
我正在获取输入的消息,将每个字母的 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 关于你的算法是正确的。但这个问题不是关于它的。不过不要忽视他的意见。