感谢您花时间看我的问题。 这是我为解密邮件而创建的方法之一。这不是整个代码,请相信我,我一直在努力搞乱代码,我不是只是跳到这里,希望你伙计们会为我做的,我只想问一下如何做点什么!
正如你们所知道的那样,我真的无法改变我目前所拥有的东西,因为我根据作业受到限制。
我的问题:我需要让任何字符“x”等于空格或“”。基本上我正在尝试对字符串中的每个“x”进行硬编码以成为一个空格,因为它不打印它应该是什么。
我现在有什么:
public static String decryption(String s, int n)
{
int originalChar, decryptedChar;
String message = "";
char c;
for(int i = 0; i < s.length(); ++i)
{
c = s.charAt(i);
decryptedChar = (int)c;
if(decryptedChar + n > 126)
originalChar = 32 + ((decryptedChar + n) - 113);
// Problem here
if(c.equals("x"))
originalChar.equals(" ");
else
originalChar = decryptedChar + n;
message = message + (char)originalChar;
}//end for loop
return message;
}//end method
我标记了问题区域。如果有人能告诉我如何正确地做到这一点,那么我可以使任何“x”等于“”而不是那么棒!谢谢你的时间。
答案 0 :(得分:0)
你的问题在于:
originalChar.equals(" ");
equals()
方法是一种检查相等性的方法 - 如果originalChar等于" "
,则返回true,并且在您的情况下重要的是 - 它不会以任何方式更改originalChar,只需将其与{{ 1}}。
如果你想将originalChar设置为&#34; &#34;,您需要" "
无论如何,更简单的解决方案是:
originalChar = " "
答案 1 :(得分:0)
其中一个问题是.equals。这并不是要对一个角色进行比较,而只是对一个角色进行比较。
下面您尝试将字符串分配给带有&#34;&#34; s的字符,字符分配需要&#39;
。我没有那么多的加密部分所以我嘲笑了一个简单的替换代码。
额外奖励:您可能希望确保x和X都被替换。
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "xxistheXbestxandxmorexxHehehe";
int n = 100;
String message = decryption(s, n);
System.out.println(message);
}
public static String decryption(String s, int n)
{
int originalChar, decryptedChar;
String message = "";
String ret = "";
char c;
for(int i = 0; i < s.length(); ++i)
{
c = s.charAt(i);
decryptedChar = (int)c;
if(decryptedChar + n > 126)
originalChar = 32 + ((decryptedChar + n) - 113);
// Problem here
if(c =='x')
{originalChar = ' ';
c = ' ';}
else
{originalChar = decryptedChar + n;
c = c;}
message = message + (char)originalChar;
ret += c;
}//end for loop
//return message;
return ret;
}//end method
答案 2 :(得分:0)
使用String类的方法replaceAll。
例如:
String a = "AxBxCxD";
String b = a.replaceAll("x"," ");
字符串b是你想要的,即“A B C D”。你需要b,因为replaceAll不会改变a。 如果要更改a,可以将其设置为b:
a = b;
这就是全部:)