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
  • 首先,将您的类命名为您的文件:FindFourLetterWords带大写字母。
  • 从类声明中删除(String[] strings)(它已经在 main 方法上)
于 2012-10-30T16:39:42.947 回答
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]);
       }
    }
}

这将打印出您输入的四个字母单词。

查看有关方法和类的java 教程以获取更多信息。

于 2012-10-30T16:43:22.343 回答
0

假设您将 Eclipse 作为 IDE 运行,如果您将代码重新排列为如下所示:

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

您将获得指定单词中的第一个 4 字母单词 (abba)。
这样,您实际上调用main了类的方法(为其提供一些String参数),这是每个 Java 程序的入口点。
正如其他人已经说过的那样,首先尝试学习基础知识。

于 2012-10-30T17:08:21.937 回答
0

您的来源中有许多问题。你真的应该找到一本像样的介绍书,因为你犯的错误是基本错误。

第一条错误消息表明该类public class findFourLetterWord需要位于其自己的文件中,该文件的名称为 findFourLetterWord.java,但是需要大写,并且您的文件名以大写字母 f 开头,而不是类名开头的小写字母 f。所以把你班级的第一个字母大写。

您不会以您正在做的方式为类提供参数。您将课程视为一种方法。类中的方法接受参数或参数,但类本身不接受。

其次,类中的静态方法不能访问非静态的类方法。您需要了解始终存在的静态方法和变量与从类创建对象时创建的动态方法和变量之间的区别。

类是用于创建对象的描述或模板。在创建实际对象之前,非静态的方法和变量不可用。但是,无需从类中实际创建对象即可访问静态方法和变量。

所以你需要类似下面的东西,我没有测试过,甚至没有编译过,所以可能会有错误,但它会让你开始。然而,有几种方法可以做到这一点,这只是一种方法的粗略,它使用对象和 new 来演示静态和非静态变量和方法之间的区别。

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 回答