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