-6

我是Java的初学者。

*编辑: *对不起,伙计们。我现在意识到出了什么问题。我很感激你所有的好答案。同时,非常抱歉浪费了您宝贵的时间。问题现已解决。

请注意,我已经编写了几行代码来获取下面的 Arraylist “list1”,但我避免在此处复制和粘贴它,因为这些代码很长

我有以下代码:

import java.util.*;
import java.util.regex.*;
import java.io.*;
  class ProDat{
     public static void main(String args[]) throws FileNotFoundException {                
             //obtain an Arraylist of String, named it "list1"
             produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");
       }

      //this method will take the Arraylist parameter and produce an output textfile
     public void produceFile(ArrayList<String> list, String str1 , String str2) {
    Collection<String> noDups_list = new HashSet<String> (list);
    try {
        File output = new File(str1);

        if(!output.exists())    {
        output.createNewFile();
        }

        BufferedWriter b1 = new BufferedWriter(new FileWriter(str1));
        b1.write(str2);

        for(String temp: noDups_list)   {
        b1.write(temp + "\t\t" + Collections.frequency(list, temp) +
            "\n");
        }
    } catch(IOException e)  {
        System.err.println("Error: " + e.get.Message());
    }
    }

}

我的问题是:每次我尝试编译它。我一直收到此错误:行上的表达式非法开头 - “public voidproduceFile(ArrayList list, String str1, String str2)”

请有人纠正我出了什么问题。

4

6 回答 6

2

由于您是从static main方法调用,因此请创建produceFile一个static方法:

public static void produceFile(..)

或者以其他方式更改您的main方法以实例化ProDat实例,然后调用成员方法:

main(..)
{
ProDat obj = new ProDat();
obj.produceFile(..);
}
于 2013-05-20T13:20:01.020 回答
0

已编辑(错误代码)

public static void main(String args[]) throws FileNotFoundException {

   // edited here            
   ArrayList<String> list = new ArrayList<String>(Arrays.asList(args));
         produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");
   }

public static void produceFile //... etc note the "static" modifier
于 2013-05-20T13:20:12.283 回答
0

静态方法只能调用静态方法

公共静态无效生产文件((ArrayList列表,字符串str1,字符串str2)

如果你想从静态方法调用非静态方法转到下面

ProDat proDat = new ProDat();

proDat.produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");
于 2013-05-20T13:21:12.040 回答
0

您的方法produceFile()应该是static,因为您直接从main()方法中调用它。如果您以这种方式创建您的对象,然后调用您的方法,那么它不会给您任何错误。

public static void main(String arg[]){
class ProDat obj = new ProDat();
produceFile(a , "filename.txt", "Column 1 \t\t Column 2\n");
}

否则按照你的方式。

class ProDat{
     public static void main(String args[]) throws FileNotFoundException {
              ArrayList<String> list1 = new ArrayList<String>();
            //add elements or data in this list                  
           // e.g list.add("product");  
             produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");
       }

     public static void produceFile(ArrayList<String> list, String str1 , String str2) {
    Collection<String> noDups_list = new HashSet<String> (list);
    try {
        File output = new File(str1);

        if(!output.exists())    {
        output.createNewFile();
        }

        BufferedWriter b1 = new BufferedWriter(new FileWriter(str1));
        b1.write(str2);

        for(String temp: noDups_list)   {
        b1.write(temp + "\t\t" + Collections.frequency(list, temp) +
            "\n");
        }
    } catch(IOException e)  {
      //  System.err.println("Error: " + e.get.Message());
    }
    }

}
于 2013-05-20T13:28:00.860 回答
0

你的班级有两个问题:

  1. 您的produceFile方法必须是静态的才能从main.

    public static void produceFile(ArrayList<String> list, ...
    
  2. 您需要初始化list1变量:

    ArrayList<String> list1 = new ArrayList<String>();
    produceFile(list1, "filename.txt", "Column 1 \t\t Column 2\n");
    
于 2013-05-20T13:21:32.420 回答
-1

您需要ProDat在 main 方法中实例化一个对象并调用produceFile()它或使该produceFile()方法成为静态方法。

于 2013-05-20T13:22:44.017 回答