如何在Java中将Arraylist作为参数传递到方法中?

如何在Java中将Arraylist作为参数传递到方法中?,java,Java,我是Java的初学者 *编辑:*对不起,伙计们。我现在意识到出了什么问题。我很感谢你所有伟大的回答。同时,我非常抱歉浪费了你宝贵的时间。问题现在解决了 请注意,我已经编写了几行代码来获取下面的Arraylist“list1”,但我避免在这里复制和粘贴它,因为这些代码很长 我有以下代码: import java.util.*; import java.util.regex.*; import java.io.*; class ProDat{ public static void ma

我是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());
    }
    }
import java.util.*;
导入java.util.regex.*;
导入java.io.*;
类产品{
公共静态void main(字符串args[])抛出FileNotFoundException{
//获取字符串的Arraylist,命名为“list1”
produceFile(列表1,“filename.txt”,“第1列\t\t第2列\n”);
}
//此方法将获取Arraylist参数并生成输出文本文件
公共void produceFile(ArrayList列表、字符串str1、字符串str2){
集合节点列表=新哈希集(列表);
试一试{
文件输出=新文件(str1);
如果(!output.exists()){
output.createNewFile();
}
BufferedWriter b1=新的BufferedWriter(新文件写入程序(str1));
b1.写入(str2);
用于(字符串临时:节点列表){
b1.写入(临时+“\t\t”+集合。频率(列表,临时)+
“\n”);
}
}捕获(IOE异常){
System.err.println(“错误:+e.get.Message());
}
}
}

我的问题是:每次我试图编译这个。我一直遇到这样的错误:行上的表达式开始非法- public void produceFile(ArrayList列表、字符串str1、字符串str2)


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

因为您是从
static
main
方法调用的,所以将
produceFile
a
static
方法:

public static void produceFile(..)
或者将
main
方法更改为实例化
ProDat
实例,然后调用成员方法:

main(..)
{
ProDat obj = new ProDat();
obj.produceFile(..);
}
已编辑(错误代码)

publicstaticvoidmain(字符串args[])抛出FileNotFoundException{
//在此编辑
ArrayList list=新的ArrayList(Arrays.asList(args));
produceFile(列表1,“filename.txt”,“第1列\t\t第2列\n”);
}
公共静态void produceFile/。。。请注意“静态”修饰符

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

公共静态void produceFile((ArrayList列表、字符串str1、字符串str2)

如果您想从静态方法调用非静态方法,请参阅下面的

ProDat proDat = new ProDat();

proDat.produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");

你的班级有两个问题:

  • 您的
    produceFile
    方法必须是静态的,才能从
    main
    调用它

    public static void produceFile(ArrayList<String> list, ...
    

  • 您需要在main方法中实例化
    ProDat
    对象,并对其调用
    produceFile()
    ,或者将
    produceFile()
    方法设置为静态。

    您的方法
    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());
        }
        }
    
    }
    
    类产品{
    公共静态void main(字符串args[])引发FileNotFoundException{
    ArrayList list1=新的ArrayList();
    //在此列表中添加元素或数据
    //例如,列表添加(“产品”);
    produceFile(列表1,“filename.txt”,“第1列\t\t第2列\n”);
    }
    公共静态void produceFile(ArrayList列表、字符串str1、字符串str2){
    集合节点列表=新哈希集(列表);
    试一试{
    文件输出=新文件(str1);
    如果(!output.exists()){
    output.createNewFile();
    }
    BufferedWriter b1=新的BufferedWriter(新文件写入程序(str1));
    b1.写入(str2);
    用于(字符串临时:节点列表){
    b1.写入(临时+“\t\t”+集合。频率(列表,临时)+
    “\n”);
    }
    }捕获(IOE异常){
    //System.err.println(“错误:+e.get.Message());
    }
    }
    }
    
    不过,这只是一个问题。我将其更改为静态,但仍然得到相同的错误:illgeal start ofexpression@user2394904您也需要这样做。您正在阅读所有答案吗?@user2394904在catch(IOException e){System.err.println(“错误:+e.get.Message());}中将e.get.Message()更正为e.getMessage()@用户2394904是否确实已正确粘贴代码?代码中的最后一行
    e.get.Message()
    有错误,并且
    list
    未给出初始化代码,请验证一次。将e.get.Message()更正为e.getMessage()我不敢相信这个问题在7分钟内得到了5个答案。它应该得到一条评论并关闭。我非常抱歉。我只是一个Java初学者。我在这段代码上花了很长时间,但仍然无法理解为什么我不能将Arraylist作为参数传递?为什么我需要Arrays.asList(args)?很抱歉,我没有将代码放在如何获取ArrayList list1上,因为它太长了。我只是添加了它作为占位符,用于生成作为方法produceFile的第一个参数传递的列表。只要将列表作为参数传递,就不需要它。事实上,我的代码不正确,因为它没有指出gument应该是一个列表(现在它是一个ArrayList)。现在编辑,但无论如何你已经得到了更好的答案…我将其更改为public static void produceFile()。但我仍然收到相同的错误。我已经编辑了我的答案,它可以工作。
    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());
        }
        }
    
    }