for循环条件求值中出现java错误:不是语句,表达式的开头非法

for循环条件求值中出现java错误:不是语句,表达式的开头非法,java,Java,我在for循环条件语句中遇到错误。。。 下面是我的代码 import static java.lang.Math.*; import java.util.*; import java.io.*; public class p3 { public static void main(String[] args) { // input Scanner sc = new Scanner(System.in); int num = sc.nextInt(); Str

我在for循环条件语句中遇到错误。。。 下面是我的代码

import static java.lang.Math.*;
import java.util.*;
import java.io.*;

public class p3 {

public static void main(String[] args) {

    // input
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();

    String result = "1";

    for (int j=1; j<num; j++) {
        if (checker(result+"1")) result = result+"1";
        else if (checker(result+"2")) result = result+"2";
        else result = result+"3";
    }

    System.out.println(result);
}

//checker function
boolean checker(String sr) {
    int n = sr.length();

    for (int m=1; m<=n/2; m++) {
        for (int i=0; i<n-2m+1; i++) {
            if (sr.substring(i, i+m) == sr.substring(i+m, i+2m)) {
                return false;
            }
        }
    }

    return true;
}
}
下面是错误消息。当然,checker方法中的循环条件有问题,但我无法修复它

p3.java:30: error: ';' expected
            for (int i=0; i<n-2m+1; i++) {
                               ^
p3.java:30: error: not a statement
            for (int i=0; i<n-2m+1; i++) {
                                ^
p3.java:30: error: ')' expected
            for (int i=0; i<n-2m+1; i++) {
                                  ^
p3.java:30: error: ';' expected
            for (int i=0; i<n-2m+1; i++) {
                                       ^
p3.java:31: error: ')' expected
                if (sr.substring(i, i+m) == sr.substring(i+m, i+2m)) {
                                                                 ^
p3.java:31: error: illegal start of expression
                if (sr.substring(i, i+m) == sr.substring(i+m, i+2m)) {
                                                                  ^
p3.java:31: error: ';' expected
                if (sr.substring(i, i+m) == sr.substring(i+m, i+2m)) {
                                                                   ^
7 errors

在相关for循环中将表达式指定为测试条件的方式是错误的。而不是int i=0;我有几个错误

  for (int i=0; i<n-(2*m)+1; i++) { // use `*`
         // again use `*` also how to compare String - use equals
        if (sr.substring(i, i+m).equals (sr.substring(i+m, i+2 *m))) {  
            return false;
        }
    }
倍增使用*

字符串比较-使用equals

您不能在程序中使用常用的方程式

例如:n-2m+1应该是n-2*m+1

不能简单地从main方法调用checkerresult+2 因为主方法是静态的。或者创建p3的对象 类并调用checker,或者使checker方法也是静态的

最终代码是


由于某些原因,我不能让这个页面显示我的整个错误消息……你知道Java和数学不一样吗?你需要一个*来乘法。另外,字符串comparisonHint的等于:在运行编译器之前编写更少的代码。并研究java语法规则。或者你打算来这里处理你将遇到的每一个编译器错误吗?旁注:请对任何块使用大括号;即使只是一行else或带有一行的if/else链!最后:姓名检查器不会对读者说什么。例如,您可以将其重命名为isResult。谢谢。我很笨..字符串比较怎么样?我想我已经在代码中修复了这个问题。。。虽然我没有解决它,因为这个问题与第1点相同
 static boolean checker(String sr) {
import static java.lang.Math.*;
import java.util.*;
import java.io.*;

public class p3 {

    public static void main(String[] args) {

        // input
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        String result = "1";

        for (int j = 1; j < num; j++) {
            if (checker(result + "1")) result = result + "1";
            else if (checker(result + "2")) result = result + "2";
            else result = result + "3";
        }

        System.out.println(result);
    }

    //checker function
    static boolean checker(String sr) {
        int n = sr.length();

        for (int m = 1; m <= n / 2; m++) {
            for (int i = 0; i < n - 2 * m + 1; i++) {
                if (sr.substring(i, i + m) == sr.substring(i + m, i + 2 * m)) {
                    return false;
                }
            }
        }

        return true;
    }
}