Java 程序将"null"放入文本文件而不是我的字符串中



编辑:我现在明白问题是什么了。我正在创建该类的新实例,该实例重置其中变量的值。对于任何想知道的人,您可以使用"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();
}
}
}

相关内容

  • 没有找到相关文章

最新更新