创建、写入和读取java文件
我已经做了一个程序,应该创建一个文件,写入它,然后从中读取。readFile()出现了问题,其中格式化程序的hasNext()未定义?我以为创建、写入和读取java文件,java,file-io,java.util.scanner,Java,File Io,Java.util.scanner,我已经做了一个程序,应该创建一个文件,写入它,然后从中读取。readFile()出现了问题,其中格式化程序的hasNext()未定义?我以为 while (file.hasNext()) { String a = file.next(); System.out.println(a); 只要文件中有东西,就可以复制到a,然后打印a?我做错了什么 import java.util.*; import java.io.*; class Oppgave3 { public stati
while (file.hasNext()) {
String a = file.next();
System.out.println(a);
只要文件中有东西,就可以复制到a,然后打印a?我做错了什么
import java.util.*;
import java.io.*;
class Oppgave3
{
public static void main(String[] args)
{
Kryptosystem a = new Kryptosystem();
a.createFile();
a.writeFile();
a.openFile();
a.readFile();
a.closeFile();
}
}
class Kryptosystem
{
public Kryptosystem(){}
Scanner keyboard = new Scanner (System.in);
private Formatter file;
private Scanner x;
public void createFile(){
try {
file = new Formatter("kryptFil.txt");
}
catch (Exception e) {
System.out.println("could not create file");
}
}
public void writeFile(){
System.out.println("what do you want to write");
String tekst = keyboard.nextLine();
file.format(tekst);
}
public void openFile() {
try {
x = new Scanner (new File("kryptFil.txt"));
}
catch (Exception e) {
System.out.println("something is wrong with the file");
}
}
public void readFile() {
while (file.hasNext()) {
String a = x.next();
System.out.println(a);
}
}
public void closeFile() {
file.close();
}
}
你说:
格式化程序未定义hasNext()的位置
请看一下,因为它将向您显示该类没有hasNext()
方法,并且您的Java编译器正确地告诉了您同样的事情。类似地,将向您显示它实际上具有您需要的方法
您正在名为x
的扫描仪中打开同一个文件,这就是您要用来读取该文件的内容。因此,解决方案是对Scanner变量调用hasNext()
:
while (x.hasNext()) { // x, not file
String a = x.next();
System.out.println(a);
}
注意:我不确定您为什么再次打开该文件并将其放入格式化程序对象中。请澄清你的动机。我相信您希望用它来写入文件,但您肯定不会尝试使用它来读取文件,这正是您使用的hasNext()
所要做的。我想你只是有点困惑,到底该使用哪种工具。是的,而(x.hasNext(){工作起来很有魅力:)