Java:将字符组转换为单个字符串

时间:2013-04-23 19:14:35

标签: java string loops char character

我一直在尝试制作一个允许我加密用户名和密码并打印结果的程序。我可以让它工作,但我想将循环中出现的字符排序为单个字符串,以便更容易管理。有什么建议吗?

System.out.println("\nYour encrypted username is " );

    for(char c : namech)
    {
        int temp = (int)c;
        int namecode = 0;

        //makes the characters w,x,y,z loops back to the start of the alphabet
        if(temp<=90 & temp>=65)
        {
            namecode = temp+4;

            if(namecode == 91)
            {
                namecode = 65;
            }
            else if(namecode == 92)
            {
                namecode = 66;
            }
            else if(namecode == 93)
            {
                namecode = 67;
            }
            else if(namecode == 94)
            {
                namecode = 68;
            }

            int i = namecode;

            char d = (char)i;


            System.out.print(d);



        }

4 个答案:

答案 0 :(得分:3)

  

我想将循环中出现的字符排序为单个字符串

最简单的方法可能是将整个事物转换为char[],然后将其转换回字符串:

char[] chars = namech.toCharArray();
for (int i = 0; i < chars.length(); i++) {
    chars[i] = obfuscateCharacter(chars[i]);
}
String obfuscated = new String(chars);

...其中obfuscateCharacter基本上是当前循环的主体,但是被提取到处理单个字符的方法中,这更容易测试等等(我拒绝称之为encryptCharacter因为这给人一种安全感:)

答案 1 :(得分:1)

我会使用StringBuilder并在加密时附加每个字符。简单而有效的连接。 IE。

StringBuilder sb = new StringBuilder();

for (char c : namech)
{
    // ... your code was here
    sb.append(d);
}

System.out.println(sb.toString());

答案 2 :(得分:0)

String result = null;
int j = 91;
int k = 92;

result = String.valueOf((char)j);
result += String.valueOf((char)k);

顺便说一下,这看起来像是一个完美的地方,可以使用Switch语句而不是多个if,否则如果......

答案 3 :(得分:0)

万一你真的需要加密数据,你自己很难做到。一般来说,手动滚动自己的加密并不是一个好主意,而是使用更可靠的加密方案。

请参阅 https://stackoverflow.com/questions/2430412/what-java-library-should-i-use-for-cryptography 中提到的Bouncy Castle API http://www.bouncycastle.org/