0

我的 Java 程序有问题。我的代码在第 16 行 ( t = T[i];) 中有一个错误,这意味着第 12 行有一个错误。它说:

Syntax error on token "=",VariableInitializer expected after this token.

我可以帮忙吗?

public class Ngrams {

    public static boolean estPrefixe(String t, String s) {
        int Longs = s.length();
        if (t.substring(0, Longs) == s) {
            return true;
        } else {
            return false;
        }
    }

    public static int nbOccurences(String[] T, String s) {
        int compteur = 0;
        String t = null;
        for (int i = 0; i < T.length; i++) {
            t = T[i];
            if (estPrefixe(t, s)) {
                compteur++;
            }
            return compteur;
        }
    }
4

3 回答 3

2

尽管您将字符串与==而不是进行比较.equals(),并且右括号似乎已经离开,但在您的程序结束时,您在nbOccurences. 即使你在 for 循环中有一个,如果你从不进入循环,你不会返回任何东西。

将您的 return 语句下移一行,而不是在循环之外。

public static int nbOccurences(String[] T, String s) {
    int compteur = 0;
    String t = null;
    for (int i = 0; i < T.length; i++) {
        t = T[i];
        if (estPrefixe(t, s)) {
            compteur++;
        }
    }
    return compteur;
}
于 2013-10-20T15:56:48.410 回答
1

该方法nbOccurences并不总是返回一个int值。如果T为 null 或为空(长度 = 0),则不返回任何值。所以你应该在for循环之后添加另一个 return 语句。

正如其他人已经提到的那样,您应该使用它equals来比较字符串。但是,这不会产生语法错误。

于 2013-10-20T15:57:01.123 回答
1

好吧,这一行有一个严重的错误:

if (t.substring(0, Longs) == s) {

这个测试总是错误的,因为 == 比较对象引用,而不是值。将其更改为:

if (t.substring(0, Longs).equals(s)) {

但整个方法毫无意义。将其更改为:

public static boolean estPrefixe(String t, String s) {
    return t.startsWith(s);
}

或者干脆完全删除该方法,因为它没有任何价值。

于 2013-10-20T16:01:35.787 回答