我正在创建一个java程序,它使用密码对用户键入的任何消息进行编码。它可以完美地使用“hello”和“testing”等单个单词,但在添加空格时会开始分崩离析,比如消息“你好,世界。”这是代码:
import java.util.Scanner;
import java.util.ArrayList;
public class Code {
public static void main(String[] args) {
Scanner shiftValue = new Scanner(System.in);
System.out.print("Please enter shift value: ");
int shift = shiftValue.nextInt();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
Scanner input = new Scanner(System.in);
String codeInput = "anything";
int index = 0;
while(!codeInput.equals("end")) {
System.out.println();
System.out.println("Please enter message: ");
codeInput = input.next();
for(int i = 0; i < codeInput.length(); i++){
if(Character.isWhitespace(codeInput.charAt(i))){
System.out.print(" ");
}
else {
while(alphabet.charAt(index) != codeInput.charAt(i)){
index++;
}
if(index > 25 - shift){
index = index - (26 - shift);
System.out.print(alphabet.charAt(index));
}
else {
System.out.print(alphabet.charAt(index + shift));
}
}
index = 0;
}
}
} //method
} //class
当我键入启动程序时,它会询问一个移位值,它决定移动密码的字母数。之后,它进入while循环,永远要求用户输入,然后输出输入的编码版本,直到输入单词“end”。在eclipse控制台中,它看起来像这样:
Please enter shift value: 3
Please enter message:
hello
khoor
Please enter message:
testing
whvwlqj
Please enter message:
但是,当我键入多个单词并在它们之间有空格时,它看起来像这样:
Please enter shift value: 3
Please enter message:
hello world
khoor
Please enter message:
zruog
Please enter message:
出于某种原因,它不是以与输入相同的句子格式显示两个单词,而是对第一个单词进行编码,然后在编码第二个单词之前再次遍历整个while循环。
我不知道为什么会这样,所以我很感激你们给我的任何帮助或建议。 感谢您阅读我的帖子,祝您度过愉快的一天。
答案 0 :(得分:1)
Scanner
已为您分割输入,默认情况下为空格。
的JavaDoc:
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。