-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 void ProduceFile(ArrayList list, String str1 , String str2)"

誰かが間違っていたことを訂正してください。

4

6 に答える 6

2

メソッドから呼び出しているため、メソッドstatic mainを作成します。produceFilestatic

public static void produceFile(..)

または、mainメソッドを変更してインスタンスをインスタンス化ProDatし、メンバー メソッドを呼び出します。

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

メソッドから直接呼び出しているため、メソッドproduceFile()は である必要があります。この方法でオブジェクトを作成してからメソッドを呼び出した場合、エラーは発生しません。staticmain()

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

編集済み(悪いコード)

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

静的メソッドは静的メソッドのみを呼び出すことができます

public static void ProduceFile((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

クラスには次の 2 つの問題があります。

  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を呼び出すproduceFile()か、produceFile()メソッドを静的にする必要があります。

于 2013-05-20T13:22:44.017 に答える