这是一个让用户输入句子然后选择一个字符的程序。然后它告诉用户该字符出现了多少次,但我遇到了一个错误,因为它需要一个标识符。这是代码:
import java.util.Scanner;
public class StringTest{
public static void main(String[] args){
Scanner incomingString = new Scanner( System.in);
System.out.print("Type Something");
String s1 = incomingString.nextLine();
Scanner s2incomingString = new Scanner( System.in);
System.out.print("Choose a character");
String s2 = s2incomingString.nextLine();
String result="";
StringBuilder sb = new StringBuilder(s1);
int counter = 0;
int start = 0;
int index = 0;
while (s1.length != -1){
int counter = 0;
index = s1.indexOf(s2,start);
if (index != -1){
counter++;
start = index+1;
}
}
}
System.out.println(index);
}
最佳答案
这一行是当前的问题:
System.out.println(index);
它存在于任何方法、构造函数或初始化程序的主体之外 - 你不能这样做。我怀疑您的意思是将其放在 main
方法的主体中。
如果您缩进代码,这会更加明显。这是您的代码,适当缩进(并跳过中间的一堆):
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner incomingString = new Scanner( System.in);
...
int index = 0;
while (s1.length != -1){
int counter = 0;
index = s1.indexOf(s2,start);
if (index != -1){
counter++;
start = index+1;
}
}
}
System.out.println(index);
}
看看 System.out.println
调用与您期望的方法声明处于同一级别吗? 始终缩进您的代码 - 大多数 IDE 可以在您键入时或根据需要为您执行此操作。它让每个人的生活都变得更好。
通过将该语句移至 main
方法的右大括号内解决问题后,您将看到另外两个问题:
- 您声明了
counter
两次,其中第二个声明位于第一个声明已在范围内的位置。 - 您使用
String.length
就好像它是一个字段,而不是一个方法;将s1.length
更改为s1.length()
然后代码将编译...但不清楚您要做什么,并且 String.length()
永远不会返回 -1 ...也许您想要像 while (index != -1)
?
关于java - 第 29 行中的标识符预期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28747259/