Java Stringbuilder实现void方法

时间:2014-06-26 19:07:37

标签: java stringbuilder void

我对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());
        }
    }

任何解决方案?

2 个答案:

答案 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为浮点数。)