在java中编译类方法

时间:2012-10-30 16:37:55

标签: java compilation

所以我的作业只问我类方法,但它要求我输入.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 个答案:

答案 0 :(得分:0)

  • 首先,将您的课程命名为您的文件:FindFourLetterWords,并附上上限。
  • 从类声明中删除(String[] strings)(它已经在main方法上)

答案 1 :(得分: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 tutorial

答案 2 :(得分: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

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

答案 3 :(得分:0)

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

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

您不以您的方式为类提供参数。你正在对这个类进行处理,就像它是一种方法。类中的方法接受参数或参数,但类本身不接受。

接下来,类中的静态方法无法访问非静态的类方法。您需要了解静态方法和始终存在的变量之间的区别,以及从类创建对象时创建的动态方法和变量。

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

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

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