我正试图从用户那里获取一个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));
}
}
答案 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);
虽然这种方法有效但仍有一些注意事项。最大的一个是性能:每次调用indexOf
或charAt
时,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.
}
}
}