0

私の宿題はクラスメソッドだけを求めていますが、.java と .class ファイルを提出する必要があります。理論的には動作するはずのコードがありますが、何を試してもコンパイルされません。たとえば、次のとおりです。

public class findFourLetterWord(String[] strings) {
   public static void main(String[] args) {
   for (int i = 0; i < strings.length; i++)
      if (strings[i].length()==4)
          return strings[i];
   return null;
}
}

ここに私が得ているエラーがあります:

8 errors found:
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 9]
Error: The public type findFourLetterWord must be defined in its own file
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 9]
Error: Syntax error on token "(", { expected
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 9]
Error: Syntax error on token ")", ; expected
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 9]
Error: Syntax error, insert "}" to complete Block
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 11]
Error: Cannot make a static reference to the non-static field strings
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 12]
Error: Cannot make a static reference to the non-static field strings
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 13]
Error: Cannot make a static reference to the non-static field strings
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java  [line: 14]
Error: Void methods cannot return a value

助言がありますか?

4

4 に答える 4

0

おそらくあなたがする必要があると思います

public class FindFourLetterWord {
    public static void main(String[] args) {
       for (int i = 0; i < strings.length; i++){
         if (strings[i].length()==4)
            System.out.println(strings[i]);
       }
    }
}

これにより、入力した 4 文字の単語が出力されます。

詳細については、メソッドとクラスに関するJava チュートリアルを参照してください。

于 2012-10-30T16:43:22.343 に答える
0

IDE として Eclipse を実行していると仮定して、コードを次のように再配置すると、次のようになります。

public class FindFourLetterWord {

  public static void main(String[] args) {

     for (int i = 0; i < args.length; i++) {

        if (args[i].length() == 4) {
           System.out.println(args[i]);
           break;
        }
     }
  }

}

次に、変更を保存します(自動的にコンパイルがトリガーされます)。コンパイルされたプログラム(.classファイル)をコマンドラインから実行できます。いくつかの引数(つまり、に含まれargsています)は、単語の検索リストです。

$> cd /path/to/your/FindFourLetterWord.class/file
$> java FindFourLetterWord aba abba ab a

指定された単語 (abba) の最初の 4 文字の単語を取得します。
このようにして、基本的に、各 Java プログラムのエントリ ポイントでmainあるクラスのメソッドを呼び出します (いくつかの引数を指定します)。 他の方もおっしゃっていますが、まずは基本を押さえてください。String

于 2012-10-30T17:08:21.937 に答える
0

ソースに多くの問題があります。あなたが犯している間違いは初歩的な間違いであるため、適切な入門書を見つける必要があります.

最初のエラー メッセージは、クラスpublic class findFourLetterWordが findFourLetterWord.java という名前の独自のファイルに存在する必要があることを示していますが、大文字化が必要であり、ファイル名はクラス名が小文字の f ではなく大文字の f で始まります。したがって、クラスの最初の文字を大文字にします。

あなたがやっているように、クラスに引数を提供しません。クラスをメソッドのように扱っています。クラス内のメソッドはパラメーターまたは引数を受け取りますが、クラス自体は受け取りません。

次に、クラス内の静的メソッドは、静的ではないクラス メソッドにアクセスできません。常にそこにある静的メソッドと変数と、クラスからオブジェクトが作成されるときに作成される動的メソッドと変数の違いを理解する必要があります。

クラスは、オブジェクトを作成するための説明またはテンプレートです。実際のオブジェクトが作成されるまで、静的ではないメソッドと変数は使用できません。ただし、クラスから実際にオブジェクトを作成しなくても、静的メソッドと変数にアクセスできます。

したがって、私がテストしたりコンパイルしたりしていない次のようなものが必要なので、エラーが発生する可能性がありますが、開始することはできます。ただし、これを行う方法はいくつかあります。これは、objects と new を使用して、静的変数と非静的変数およびメソッドの違いを示す 1 つのアプローチのラフ ドラフトにすぎません。

public class FindFourLetterWord {
   String [] myArgs;
   // constructor for the class
   public FindFourLetterWord (String [] args) {
       myArgs = args;
   }

   public String FindWord () {
       for (int i = 0; i < myArgs.length; i++)
          if (myArgs[i].length() == 4)
              return myArgs[i];
       }
       return null;
   }

   // the main where processing starts
   public static void main(String[] args) {
       FindFourLetterWord myObj = new FindFourLetterWord(args);

       String  foundWord = findWord();
       if (foundWord == null) {
           System.out.println ("no word found");
       } else {
          System.out.println ("Found word " + foundWord);
       }
   }
}
于 2012-10-30T17:09:09.670 に答える
0
  • まず、ファイルのようにクラスに名前を付けますFindFourLetterWords。大文字を使用します。
  • クラス宣言から を削除します(String[] strings)(すでにメイン メソッドにあります)。
于 2012-10-30T16:39:42.947 に答える