我正在尝试将一个字符串转换为另一个字符串,例如加密。基本上,如果我的初始字符串是“ ABC”,则结果将类似于“ pb7gxr9b3ptwhvtc92”,它由3个代码组成,每个代码分别对应3个初始字符。初始字符串来自Android EditText,当您按下某个按钮时会进行转换,然后输出显示在TextView中。这是代码:
eB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String textInput = editText1.getText().toString().toLowerCase();
String str;
StringBuilder output = new StringBuilder();
for (int i = 0; i < textInput.length(); i++) {
switch (textInput.charAt(i)) {
case ' ':
output.append("wus65s");
case 'a':
output.append("pb7gxr");
case 'b':
output.append("9b3ptw");
case 'c':
output.append("hvtc92");
...........................
...........................
case 'z':
output.append("acxdox");
}
}
str = output.toString();
oE.setText(str);
}
});
输出是完全错误的(我张贴了下面的图像),好像我引入了一个完整的文本,而不是3个字符: image
有人能启发我我的代码不起作用的原因吗?谢谢!
答案 0 :(得分:1)
向要处理的每个break;
添加一个case
语句。否则,也将运行匹配项下面的其余case
个。这就是为什么您得到的String
会那么长的原因。使您的switch
语句如下:
switch (textInput.charAt(i)) {
case ' ':
output.append("wus65s");
break;
case 'a':
output.append("pb7gxr");
break;
case 'b':
output.append("9b3ptw");
break;
case 'c':
output.append("hvtc92");
break;
...........................
...........................
case 'z':
output.append("acxdox");
break;
default:
// handle the case for a char that is neither a letter nor a whitespace
break;
}