你如何在一个arraylist中转移char值?

时间:2017-05-17 19:06:43

标签: java encryption arraylist cryptography shift

我试图编写一个密码项目,其目标是让用户发送文本和转移号码。结果将相应地打印出来。例如,如果我发送了#Hello; Hello World"如果移位值为1,则应打印:" Gfmmp Xrsme"。问题是因为我有一个char值(字母表)的arraylist,所以我在转换时遇到了麻烦。

这是我到目前为止所做的:

                import java.util.ArrayList;

                public class CaesarCipher
                {
                int shift;
                String inputText;
                ArrayList<String> arr;
                ArrayList<String> exchange = new ArrayList<String>();

                public CaesarCipher()
                {
                        shift = 0;
                        inputText = "";
                }

                public CaesarCipher(int s, String iT)
                {
                        shift = s;
                        inputText = iT;
                }

                public void alphabet()
                {
                        arr = new ArrayList<String>();
                        arr.add("A");
                        arr.add("B");
                        arr.add("C");
                        arr.add("D");
                        arr.add("E");
                        arr.add("F");
                        arr.add("G");
                        arr.add("H");
                        arr.add("I");
                        arr.add("J");
                        arr.add("K");
                        arr.add("L");
                        arr.add("M");
                        arr.add("N");
                        arr.add("O");
                        arr.add("P");
                        arr.add("Q");
                        arr.add("R");
                        arr.add("S");
                        arr.add("T");
                        arr.add("U");
                        arr.add("V");
                        arr.add("W");
                        arr.add("X");
                        arr.add("Y");
                        arr.add("Z");
                }

                public void convert()
                {
                    String revisedText = inputText.replaceAll("\\s","");
                    //Turn revisedText into an array and match it with array above
                    revisedText.toUpperCase();
                    int j = 1;
                    String letter = "";

                        for (int i = 0; i < revisedText.length(); i++)
                        {
                            exchange.add(revisedText.substring(i, j));
                            j++;
                        }
                }

                public void shift()
                {
                    shift = shift % 26 + 26;
                    ArrayList<String> newArr = new ArrayList<String>(); // array with shifted values
                    int pos = 0;

                    for(int r = 0; r < exchange.size(); r++)
                    {
                     if(arr.get(r).equals(exchange.get(r)))
                        arr.indexOf(r) + shift = pos;
                    }


                }

                public String toString()
                {
                        return "";
                }

                }

1 个答案:

答案 0 :(得分:0)

这是一个示例

的快速循环
    String string = "Hello World";
    String newPhrase = "";
    int shift = 1;
    for(int i = 0; i < string.length(); i++){
        if(string.charAt(i) != ' ')
            newPhrase += (char)(string.charAt(i) + shift);
        else
            newPhrase += ' ';
    }
    System.out.println(string + " -> " + newPhrase);

输出

Hello World -> Ifmmp Xpsme

但是你应该注意到我还没有检查一些边缘情况。一旦你理解了上面的代码,你应该能够找到我正在谈论的边缘情况。