我是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)”
请有人纠正我出了什么问题。
答案 0 :(得分:2)
由于您使用static
main
方法拨打电话,请produceFile
static
方法:
public static void produceFile(..)
或以其他方式更改您的main
方法以实例化ProDat
实例,然后调用成员方法:
main(..)
{
ProDat obj = new ProDat();
obj.produceFile(..);
}
答案 1 :(得分: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
答案 2 :(得分:0)
静态方法只能调用静态方法
public static void produceFile((ArrayList list,String str1,String str2)
如果你想从静态方法调用非静态方法,请转到下面
ProDat proDat = new ProDat();
proDat.produceFile(list1 , "filename.txt", "Column 1 \t\t Column 2\n");
答案 3 :(得分:0)
你的班级有两个问题:
您的produceFile
方法必须是静态的才能从main
调用它。
public static void produceFile(ArrayList<String> list, ...
您需要初始化list1
变量:
ArrayList<String> list1 = new ArrayList<String>();
produceFile(list1, "filename.txt", "Column 1 \t\t Column 2\n");
答案 4 :(得分: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());
}
}
}
答案 5 :(得分:-1)
您需要在main方法中实例化ProDat
对象并在其上调用produceFile()
或使produceFile()
方法保持静态。