所以我是编程的初学者,我正试图弄清楚问题是什么
以下功能。问题在于scan.hasNext()
方法我有两个println
语句(在我扫描后一个,第二个在第二个方法上)告诉我scan.hasNext()
是否返回 true 或 false 。奇怪的是
现在的代码进入了while循环,这是应该发生的事情,但是当我
时删除其中没有进入循环的println
语句之一以及其他打印
声明告诉我scan.hasNext()
false 。
这很奇怪,因为除了擦除打印声明之外我什么也没做。而且我
发现如果我再添加一个,总共3个打印语句,它将再次为假,如果我
再加上第四个是真的,等等。我想我不明白hasNext是如何工作的,因为我
不知道如何关注“光标”的位置。
public void createFile(String filename){
final File file = new File(filename);
try{
scan = new Scanner(file);
**System.out.println(scan.hasNext());**
buff = new BufferedWriter(new FileWriter(filename), 1);
}
catch(Exception e1){
try{
buff = new BufferedWriter(new FileWriter(filename));
scan = new Scanner(file);
}
catch(Exception e2){
System.out.println("Error trying to create file");
}
}
}
public String readFile(){
String fileContents = "";
**System.out.println(scan.hasNext());**
if(scan.hasNext())
while(scan.hasNext())
fileContents = fileContents + scan.next()+" "+scan.next()+" "+scan.next();
return fileContents;
}
答案 0 :(得分:0)
好的,我明白了。 vishal_aim的建议帮我搞清楚了。以下一行
buff = new BufferedWriter(new FileWriter(filename), 1);
将我的文件缩减为零大小。原因是因为我真的打算这样做。
buff = new BufferedWriter(new FileWriter(filename, true));
首先我放一个,因为我认为当java要求布尔值时,java会自动生成1。其次,我试图使用FileWriter类的构造函数,让我追加到文件的末尾。如果你没有在你的文件名中包含true,那么它会创建一个新文件,截断你需要的文件中的任何内容。这只是一个累了的错误,如果我需要将布尔值放在BufferedWriter或FileWriter上,我已经忘记了。如果你想知道BufferedWriter构造函数没有给我的原因,错误是因为有一个构造函数,它接受一个int,int是缓冲区大小。谢谢大家的贡献。