2015-12-10 286 views
-2

感谢您花时间查看我的问题。 这是我为解密消息而创建的方法之一。这不是完整的代码,相信我我一直在尝试几个小时搞乱代码,我没有在这里跳过,希望你们能为我做,我只是问一个如何做的事情!Java - 将单个字符与字符串进行比较

就这样,你们知道,我无法从我目前所做的事情中改变太多,因为我受限于任务。

我的问题:我需要使任何字符是“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”等于“”,而不是那么棒!谢谢你的时间。

+2

的[我如何替换在Java中的字符串中的字符?]可能的复制(HTTP:/ /stackoverflow.com/questions/1234510/how-do-i-replace-a-character-in-a-string-in-java) – jpw

+4

这怎么可能编译? char是原始的,它没有方法。你甚至没有尝试运行/调试你自己的代码。 – redFIVE

+0

@redFive实际上它的作用不是当我添加问题区域时,因为我无法弄清楚如何正确地编写我想要完成的任务 – synth

回答

0

你的问题是:

originalChar.equals(" "); 

equals()方法是检查平等的方法 - 如果originalChar等于" ",什么事情在你的病例不以任何方式改变originalChar返回true,只是将其与" "进行比较。

,如果你想设置originalChar是“”,你需要做的originalChar = " "

在任何情况下,更容易的解决办法是:

s = s.replace("x"," "); 
+0

@ CubeJockey-是的,我怀疑这个代码是否会编译。但是把其他所有东西放在一边 - 不应该被用来重新设定价值 –

0

的问题之一是.equals 。这并不意味着要对字符进行比较,只能对字符串进行比较。

进一步在下面,您尝试将字符串分配给带有“”的字符,字符分配需要''。

我没有得到加密部分这么多,所以我嘲笑了一个简单的替换代码。

奖励:您可能希望确保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 
0

使用方法replaceAll的String类。

例如:

String a = "AxBxCxD"; 
String b = a.replaceAll("x"," "); 

串B是你想要的,那就是 “A B C d”。你需要b,因为replaceAll不会改变a。 如果你想改变,你可以将其设置为B:

a = b; 

这是所有:)