Java找到StringBuffer中字符之间的区别
Posted
技术标签:
【中文标题】Java找到StringBuffer中字符之间的区别【英文标题】:Java find difference between characters in StringBuffer 【发布时间】:2016-02-21 13:27:33 【问题描述】:我正在开发一个 Anagram 程序,我目前正在开发一个名为 diff
的方法,它应该返回一个 StringBuffer,其中包含第一个 StringBuffer
中但不在第二个。例如,如果 StringBuffers 是 abba
和 acca
,那么我的 diff 方法应该返回 bb。到目前为止,我目前有一个带有 if 语句的循环,但它不起作用。任何帮助,将不胜感激。谢谢
public StringBuffer diff()
StringBuffer diffVal = null;
for (int i =0; i < sBuffer1.length(); i++)
String let1 = String.valueOf(sBuffer1);
if (sBuffer2.indexOf(let1) == -1 )
return diffVal;
【问题讨论】:
您正在比较转换为字符串的整个缓冲区。所以最好在循环中使用索引。检查每个字符,而不是整个缓冲区 为什么StringBuffer
没有死并埋在学校里?
请不要使用StringBuffer,因为它在十多年前被StringBuilder取代了。
【参考方案1】:
我认为您正在尝试使用循环来逐个检查sBuffer1
中的一个字符。但是String let1 = String.valueOf(sBuffer1);
为您提供了sBuffer1
的整个字符串。
您需要String let1 = sBuffer1.substring(i, i + 1)
从sBuffer1
中获取单个字符以检查它是否存在于sBuffer2
中。
例如:
public static StringBuffer diff(StringBuffer sBuffer1, StringBuffer sBuffer2)
StringBuffer diffVal = new StringBuffer();
for (int i = 0; i < sBuffer1.length(); i++)
String let1 = sBuffer1.substring(i, i + 1); // get the character from sBuffer1
if (sBuffer2.indexOf(let1) == -1)
diffVal.append(let1); // append the character to the diff
return diffVal;
【讨论】:
【参考方案2】:好的,这可能有效,你的逻辑有点错误,这段代码是直截了当的。搜索第二个字符串缓冲区中不存在的字符,将其添加到结果 SF。
public StringBuffer diff()
StringBuffer diffVal = new StringBuffer();//initialize before you use it.
for (int i =0; i < sBuffer1.length(); i++)
String let1 = String.valueOf(sBuffer1.charAt(i))//get the character at the ith position.
if (sBuffer2.indexOf(let1) == -1 )
diffVal.append(let1);
return diffVal;
【讨论】:
【参考方案3】:试试这个。
StringBuilder diffVal= new StringBuilder();
StringBuffer sBuffer1 = new StringBuffer("abbad");//input 1
StringBuffer sBuffer2 = new StringBuffer("acca");//input 2, you can ignore if you have already passed/defined these
for (int i =0; i < sBuffer1.length(); i++)
if(i >= sBuffer2.length())//handles difference in input string length
diffVal.append(sBuffer1.substring(i, sBuffer1.length()));
break;
if (sBuffer1.charAt(i) != sBuffer2.charAt(i))
diffVal.append(sBuffer1.charAt(i));
System.out.println(diffVal);// I am printing it here
输出是:bbd
这里的一个建议是使用StringBuilder
,如果你在这里使用的字符串不需要是synchronized
【讨论】:
以上是关于Java找到StringBuffer中字符之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
全面解释java中StringBuilderStringBufferString类之间的关系
Java常用类之StringBuffer与StringBuidler
分享知识-快乐自己:Java 中 的String,StringBuilder,StringBuffer三者的区别
初识Java语言- StringStringBuilder和 StringBuffer三者之间的区别和联系!!!建议收藏