使用带空格的字符串,将其拆分为单个字符,并将其添加到字符列表

时间:2019-04-23 20:17:35

标签: java

好吧,所以我试图在Java中创建一个Caesar密码,并且尝试使用以前使用过的python方法,在此方法中,您将接收用户输入并检查是否存在任何字母字符串“ alphabet”,然后使用移位值查找字符的当前索引,然后向其添加移位值,然后将该当前字符添加至新字符串“ EncryptedMessage”。

我似乎无法弄清楚如何转换用户输入的字符串,将其拆分为单个字符,然后将其添加到带有空格的“字符”列表中。

我尝试使用for循环来执行此操作,然后打印出结果,但是只要用户输入的字符串中有空格,它就总是停止。

任何人都可以帮助我下一步做什么。另外,我是一名新的Java程序员,所以请不要提供复杂的代码来解决它。

import java.util.Scanner;
import java.util.ArrayList;
public class CaesarCipher {
    protected final static String alphabet = "abcdefghij klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.'(){}[]";
    public static void main(String[] args) {
        //Declares the scanner class that is used to read the user's input from the keyboard
        Scanner input = new Scanner(System.in);
        //Asking the user for a shift value for encryption
        System.out.println("Please enter a shift value:");
        int shiftVal = input.nextInt();
        //Asks the user for a string that they want to be encrypted
        System.out.println("Please enter the message that you want to be encrypted:");
        String msg = input.next();
        //A String that will store the encrypted message
        String encryptedMsg = "";
        ArrayList<Character> chars = new ArrayList<>();
        }
      }

1 个答案:

答案 0 :(得分:1)

您可以按toCharArray()将字符串拆分为字符,然后按如下所示进行移动:

int shiftVal = 5;
String whatever = "dfsfsdf";
char[] whateverArr = whatever.toCharArray();
for (int i = 0; i < whateverArr.length; i++) {
    whateverArr[i] += shiftVal;
}
String whateverEnc = String.valueOf(whateverArr);

不使用toCharArray()的另一种方式:

char[] whateverArr = new char[whatever.length()];
for (int i = 0; i < whateverArr.length; i++) {
    whateverArr[i] = (char) (whatever.charAt(i) + shiftVal);
}
String whateverEnc = String.valueOf(whateverArr);

我还没有测试过哪一个更快,但是我认为两者之间的差别应该很小。