将字符串存入ArrayList并写入文件时出现cannot find symbol错误求助
问题原因与解决方案
错误根源
- 你的类名**
Arrays**和Java标准库中的java.util.Arrays类完全重名,编译器会优先把Arrays.asList()中的Arrays识别为你自定义的Arrays类,而这个类里并没有asList静态方法,因此抛出cannot find symbol错误。 - 同时你未导入
java.util.Arrays类,就算类名不冲突,直接调用Arrays.asList()也会触发同样的错误。
修正方案
有两种可行的解决办法:
方法一:修改自定义类名
将你的类名改为非Arrays的名称(比如ArrayFileWriter),同时导入java.util.Arrays类:
import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; // 新增导入语句 public class ArrayFileWriter{ // 修改类名 public static void main(String[] args)throws IOException { File f = new File("C:\\Users\\Administrator\\Documents\\java code\\Arrays.txt"); FileWriter fw = new FileWriter(f,true); PrintWriter pw = new PrintWriter(fw); ArrayList<String> header = new ArrayList<>(Arrays.asList("NAME","REGNUM","ACADEMICYEAR","PROGRAMME","COURSECODE","ASS1","ASS2","ASS3","TEST1","AGGREGATEDMARK","COURSEWORK","GRADE","RESULT")); pw.print(header); pw.close(); } }
方法二:使用全限定类名调用
如果不想修改类名,直接用java.util.Arrays的全限定名调用asList方法即可,无需额外导入:
import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.io.IOException; import java.util.ArrayList; public class Arrays{ public static void main(String[] args)throws IOException { File f = new File("C:\\Users\\Administrator\\Documents\\java code\\Arrays.txt"); FileWriter fw = new FileWriter(f,true); PrintWriter pw = new PrintWriter(fw); // 使用全限定类名指定调用标准库的Arrays类 ArrayList<String> header = new ArrayList<>(java.util.Arrays.asList("NAME","REGNUM","ACADEMICYEAR","PROGRAMME","COURSECODE","ASS1","ASS2","ASS3","TEST1","AGGREGATEDMARK","COURSEWORK","GRADE","RESULT")); pw.print(header); pw.close(); } }
额外提示
- 直接调用
pw.print(header)会输出ArrayList的默认toString格式(带方括号和逗号),如果需要更友好的输出格式(比如每个元素换行或无括号的逗号分隔),可以遍历列表逐个写入:
for(String item : header) { pw.print(item + ", "); // 每个元素后加逗号分隔 // 或者用pw.println(item); 让每个元素单独占一行 }
内容的提问来源于stack exchange,提问作者Lee Tubz
相关产品推荐
相关产品推荐

