繁体   English   中英

Java奇怪的字符串间距问题

[英]Java Strange String Spacing Issue

我正在创建一个使用密码对用户键入的任何消息进行编码的Java程序。它可以完美地与“ hello”和“ testing”之类的单个单词一起使用,但是在添加空格(如消息“ hello world”)时开始崩溃“。 这是代码:

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循环。

我不知道为什么会这样,所以,我希望你们能给我任何帮助或建议。 感谢您阅读我的文章,祝您有美好的一天。

Scanner已经为您拆分了输入,默认情况下使用空格。 JavaDoc的:

扫描程序使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM