改变字母

时间:2015-10-07 20:30:24

标签: java

我正试图从用户那里获取一个String并将每个字母更改为String" enc"我在这里。所以基本上如果用户输入"你好"我想让它返回" xahhi"。我有点迷茫,不知道该怎么做。

String userInput = input.nextLine();

String letters = "abcdefghijklmnopqrstuvwxyz";
String enc =     "kngcadsxbvfhjtiumylzqropwe";

int stringLength = userInput.length();

for (int i = 0; i < stringLength; i++) {
    if (userInput.charAt(i) == letters.charAt(i)) {
        System.out.print(enc.charAt(i));
    }
}

3 个答案:

答案 0 :(得分:0)

你想要做的是Map<Character,Character>其中key是正确的字符串中的字符和值应该是编码的字符。

然后,您可以在Map中查询编码并生成您编码的字符串。

代码应如下所示:

Map<Character,Character> myEncodingMap = new HashMap<Character,Character>();
StringBuilder sb = new StringBuilder();
for (Character ch : letters.toCharArray()) {
    sb.append(myEncodingMap.get(ch)
}
System.out.print(sb.toString());

答案 1 :(得分:0)

如果您只想使用String方法,则需要关闭。但是,您需要使用String类中的两个方法来完成此操作:indexOf(char)charAt(int)

indexOf(char)接受一个字符并返回它在字符串中出现的第一个位置的索引。例如,如果您有一个内容为Hello World的字符串,则str.indexOf('l')将返回2,这是字符串中与给定字符匹配的第一个索引。

charAt(int)接受一个整数并返回给定索引处的字符串中的字符。例如,使用与上面相同的字符串,调用str.charAt(4)将返回&#39; o&#39;。

使用这两种方法可以获得一个字符串的索引,然后您可以使用它来引用另一个字符串的字符。

我不会在你的代码中给出答案(你应该学会足够自己能够做到这一点),但是我会给你一个如何使用以上两种方法。

// The two strings used for encoding
String strNormal = "ABCDEF";
String strCode = "UVWXYZ";

// The example string that is input by the user
String input = "BED";

/*** NOTE: This only replaces the first letter of the input string ***/

// Get the first character of the input string
char originalChar = input.charAt(0);

// Get the index of of the corresponding character in the normal string
int searchIndex = strNormal.indexOf(originalChar);

// Get the corresponding character of the encoder string
char encodedChar = strCode.charAt(searchIndex);

// Print out the encoded letter
System.out.print(encodedChar);

虽然这种方法有效但仍有一些注意事项。最大的一个是性能:每次调用indexOfcharAt时,Java都会遍历整个字符串以查找您正在寻找的内容。对于像你一样要处理的小字符串来说,这不是一个问题,但想象一下字符串长度可能超过10,000个字符......你可能需要这样做搜索该字符串中的每个字母10,000次!不是超级高效。

答案 2 :(得分:0)

如果您刚刚开始编程,这可能会更简单一些。我已经解释了每行在代码中的作用,所以看看并尝试理解并扩展它!让我知道您的想法或者您是否有任何问题。

  import java.util.Scanner;

public class main {

    public static void main(String[] args) {
        char[] letters = "abcdefghijklmnopqrstuvwxyz".toCharArray(); //Just takes the String and puts it into a array of chars
        char[] enc = "kngcadsxbvfhjtiumylzqropwe".toCharArray();

        Scanner scan = new Scanner(System.in); //Scanner for user input

        System.out.println("enter phrase"); //prompts for user input
        String input = scan.next(); //Takes user input and stores it in String input

        for(int i = 0; i<input.length(); i++){
            char temp = input.charAt(i); //Stores the first Character of the entered phrase in a variable called temp.

            int tempNums = (new String(letters).indexOf(temp)); //takes the position in the first array of the first char entered and stores it.
            System.out.print(new String(enc).charAt(tempNums)); //prints out the values of the first character according to the second array.   
                }       
            }

        }