2012-10-30 30 views
0

所以我的作业只问我类方法,但它需要我打开.java和.class文件。以及我有理论上应该工作的代码,但无论我尝试什么,它都不会编译。比如这里有一个:在java中编译类方法

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 

有什么建议?

+2

Ouch。从类声明中删除参数。 'public class FindFourLetterWord {...}'同时大写类名的第一个字母 –

+0

另外,FindFourLetterWord.java以大写字母F开头,类名正常f。公共类和.java文件的名称必须匹配。 –

+0

快速Google搜索提出[this](http://www.roseindia.net/javatutorials/manypublicclassesinonefile.shtml)。 :P – Miguel

回答

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程序的入口点。正如其他人已经说过的,首先尝试从基础知识中学习。

0
  • 首先,请将您的班级命名为您的档案:FindFourLetterWords带上限。
  • 从类声明中删除(String[] strings)(这是在已经的主要方法)
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以获取更多信息。

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