字符串迭代和构建新的编码字符串不起作用

时间:2019-03-08 10:35:05

标签: java android

我正在尝试将一个字符串转换为另一个字符串,例如加密。基本上,如果我的初始字符串是“ 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

有人能启发我我的代码不起作用的原因吗?谢谢!

1 个答案:

答案 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;
}