我对StringBUilder.append()感到困惑。 Netbeans说不允许使用void类型。
这是我的Java类,名为Levencthein.java
public void printDistance(String s1, String s2) {
System.out.println( computeEditDistance(s1, s2) + " ("+similarity(s1, s2) * 100 +")");
}
现在,在另一个类中,假设b.java
StringBuilder s = new StringBuilder();
for (final JCCDFile file : files) {
LevenshteinDistance lv = new LevenshteinDistance();
if (idLexerSelection != getIDLexer()) {
System.out.println(temp.getName() + " ==> " + file.getName());
s.append(lv.printDistance(name1, name2)); This is the error
sb.append(file.getName());
}
}
任何解决方案?
答案 0 :(得分:5)
您试图追加printDistance
的返回值,但没有返回值,因为它是void
。在printDistance
中,不是打印值,而是返回它。
return computeEditDistance(s1, s2) + " ("+similarity(s1, s2) * 100 +")";
答案 1 :(得分:0)
您无法将printDistance
的void返回附加到StringBuilder
(正如编译器告诉您的那样)。如果我理解你,那么
public void printDistance(String s1, String s2) {
System.out.println( computeEditDistance(s1, s2)
+ " ("+similarity(s1, s2) * 100 +")");
}
应该返回String
,我会像
String.format
public void printDistance(String s1, String s2) {
return String.format("%s (%s)", computeEditDistance(s1, s2),
similarity(s1, s2) * 100);
}
假设computeEditDistance()
和similarity()
返回String
。如果他们返回int
,则将%s
格式替换为%d
(或%f
为浮点数。)