for循环条件求值中出现java错误:不是语句,表达式的开头非法
我在for循环条件语句中遇到错误。。。 下面是我的代码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
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;
}
}