【问题标题】:Identifier Expected Error in Line 29第 29 行中的标识符预期错误
【发布时间】:2015-02-26 16:10:06
【问题描述】:

这是一个让用户输入一个句子然后选择一个字符的程序。然后它会告诉用户该字符出现了多少次,但我遇到了一个错误,因为它需要一个标识符。这是代码:

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);         
}

【问题讨论】:

  • 请告诉我们第 29 行 - 并在您发布时缩进您的源代码。目前真的很难阅读。

标签: java identifier


【解决方案1】:

这一行是最直接的问题:

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...也许您想要@987654331 @?

【讨论】:

    【解决方案2】:

    你正在使用

    s1.length
    

    length() 是一种方法,而不是String 的字段。

    s1.length()
    

    是你想要的。此外,您正在声明重复变量counter。您只能在本地范围内声明一次。

    【讨论】:

    • 虽然这些都是正确的,但它们并不是 OP 直接问题的原因。
    • @JonSkeet 你是对的。我会留下这个,希望在他解决更大的问题后能对他有所帮助。
    猜你喜欢
    • 2015-04-29
    • 2022-07-06
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多