2

文字列の単語をカウントするプログラムを作成しようとしています。

以下は私のコードで、コードにエラーが発生し、修正できません。

import java.util.*;    
class string1 {
    public static int wordcount() {
        String str;
        Scanner s1= new Scanner(System.in);
        System.out.println("Enter String:");
        str=s1.nextLine();
        int count=WCount(str);
        System.out.println("Count="+count);
    }

    public static int WCount(String str) {
        int l=str.length();
        int count=0;
        for(int i=0;i<l;i++) {
            if(str.charAt(i)==' ')
                count++ ;
        }
        if(count>0) 
            count++ ;
        return(count);
    }
}
public static void main (String s[]) {
    string1 ss=new string1();
    ss.wordcount();
}

エラー :

java:25: class, interface, or enum expected
public static void main(String s[]) {
          ^
C:\Users\coocl\Desktop\java\string1.java:27: class, interface, or enum expected
ss.wordcount();
^
C:\Users\coocl\Desktop\java\string1.java:28: class, interface, or enum expected}3 errors

Process completed.
4

5 に答える 5

5

あなたのメインはクラス外です。クラス内で宣言します。

于 2012-07-20T17:40:21.407 に答える
4

mainメソッドはクラス内に属しますjavaコンパイルされたコードを実行するために実行すると、指定したクラスに属するメソッドを実行しようとしますmain。より一般的には、Java のクラス外でメソッドを宣言することはできません。すべてのメソッドはクラスに属している必要があります。

メソッドwordcountとメソッドWCountは両方とも静的であるため、それらを使用するためにインスタンスを作成する必要はありませんstring1。クラスでそれらを呼び出すだけでよいことに注意してmainください。

string1.wordcount();

最後に、Java では、クラス名を大文字で始めるのが慣例です。たとえばString1、これらの命名規則を参照してください。

于 2012-07-20T17:40:23.360 に答える
0

}WCountの後に余分があります。

于 2012-07-20T17:40:30.077 に答える
0

メソッドは、クラスの外側ではなく、クラスのmain内側にある必要があります。次の 2 つの方法があります。

  1. string1クラス内に移動します。

  2. 同じ *.java ファイル内のクラス内に移動します

    public class Main {
        public static void main (String s[]) {
            string1 ss=new string1();
            ss.wordcount();
        }
    }
    
于 2012-07-20T17:41:36.197 に答える
0

悪い習慣:

string1 ss=new string1(); 
ss.wordcount(); 

Java クラス名の
最初の文字は大文字でなければならず、Java メソッドおよびフィールド名の最初の文字は小文字でなければなりません。
JAVA 定数 (静的最終) 名のすべての文字は大文字でなければなりません。
wordCount() = static メソッドと create object (string1 ss=new string1()) は true ではありません。
静的フィールドとメソッドは、(インスタンス クラスではなく) クラス名から呼び出す必要があります。
ClassName.(メソッド/フィールド)
String1.wordCount() でなければなりません

あなたのコードには複数の問題があります (「{}」、wordcount() の「return」) コードを参照してください:

public class Test {
    public static int wordcount() {
        String str;
        Scanner s1 = new Scanner(System.in);
        System.out.println("Enter String:");
        str = s1.nextLine();
        int count = WCount(str);
        System.out.println("Count=" + count);
        return count;
    }

    public static int WCount(String str) {
        int l = str.length();
        int count = 0;

        for (int i = 0; i < l; i++) {
            if (str.charAt(i) == ' ')
                count++;
        }
        if (count > 0)
            count++;
        return (count);
    }

    public static void main(String s[]) {
                Test.wordcount();
    }
}
于 2012-07-20T17:42:18.073 に答える