编辑:我现在明白问题是什么了。我正在创建该类的新实例,该实例重置其中变量的值。对于任何想知道的人,您可以使用"static"作为变量的值,以便在类的所有实例中保持不变 示例:public static int example = 10;
我正在尝试将字符串添加到文本文件,但是当我添加字符串时,它会在文件中放置"null"而不是我的字符串。字符串是"列表名称">
我的 a 值设置为字符串的类:
public class NewList {
private String listName;
public void newList() {
System.out.println("NEW LIST");
System.out.print("List Name: ");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
setListName(scanner.next());
System.out.println(listName);
ListsWriter listsWriterObject = new ListsWriter();
listsWriterObject.listsWriter();
}
public String getListName() {
return listName;
}
public void setListName(String listName) {
this.listName = listName;
}
将字符串添加到文本文件的类:
public class ListsWriter {
public void listsWriter() {
NewList newListObject = new NewList();
File lists = new File("lists.txt");
try{
PrintWriter pw = new PrintWriter(new FileWriter(lists, true));
pw.append(newListObject.getListName() + "n");
pw.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
查看代码的执行顺序。您从scanner
的东西开始,然后将名称保存在变量private String listName;
中。此变量属于您当前所在的类NewList
的实例。请务必注意,如果您创建其他NewList
实例,则它们都将有自己的listName
变量。
接下来,创建ListsWriter
并调用其方法。在那里,您尝试使用newListObject.getListName()
读取列表名称,但您之前使用NewList newListObject = new NewList();
。这将创建一个新的NewList
实例。它有自己的listName
变量,它与其他实例的变量不同!因此它是null
.
如果需要其他实例的名称,则需要将值或对此实例的引用传递给ListsWriter
对象。
为此,可以使用接受String
作为参数(或对NewList
对象的引用)的构造函数ListsWriter
。或者,将参数添加到方法listsWriter
.
例如:public void listsWriter(String listName) {
好的!所以我修改了你的代码,你可以使用它:) 新列表.java
public class NewList {
private String listName;
public void newList() {
System.out.println("NEW LIST");
System.out.print("List Name: ");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
listName = scanner.next();
System.out.println(listName);
ListsWriter listsWriterObject = new ListsWriter();
listsWriterObject.listsWriter(listName);
}
public static void main(String[] args) {
new NewList().newList();
}
}
列表编写器.java
public class ListsWriter {
public void listsWriter(String listName) {
File lists = new File("lists.txt");
try{
PrintWriter pw = new PrintWriter(new FileWriter(lists, true));
pw.append(listName + "n");
pw.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}