gpt4 book ai didi

java - scan.hasNext 应该为真时为假

转载 作者:行者123 更新时间:2023-12-03 23:10:21 25 4
gpt4 key购买 nike

所以我是编程的初学者,我想弄清楚问题出在哪里

以下函数。问题出在 scan.hasNext() 方法上 我有两个 println

语句(一个在我进行扫描之后,一个在第二种方法上)告诉我 scan.hasNext() 是否返回 true。奇怪的是

代码现在进入 while 循环,这是应该发生的,但是当我

删除它不在循环中的 println 语句之一和另一个打印

语句告诉我 scan.hasNext()false

这很奇怪,因为除了删除打印语句外,我没有做任何更改。此外我

发现如果我为总共 3 个打印语句再添加一个,它将再次为 false,如果我

再次添加第四个它是真的,等等。我想我只是不明白 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;

}

最佳答案

好吧,我想通了。 vishal_aim 的建议帮助我弄明白了。下面一行

buff = new BufferedWriter(new FileWriter(filename), 1);

正在将我的文件截断为零大小。原因是因为我真的打算这样做。

buff = new BufferedWriter(new FileWriter(filename, true));

首先我放了一个,因为我认为 java 在请求 boolean 值时会自动使 1 为真。其次,我试图使用 FileWriter 类的构造函数,它允许我附加到文件的末尾。如果您不在文件名中包含 true,它将创建一个新文件,将文件中的任何内容截断为 0。如果我需要将 boolean 值放在 BufferedWriter 或 FileWriter 上,这只是我忘记的一个令人厌烦的错误。另外,如果您想知道 BufferedWriter 构造函数没有给我的原因和错误是因为它有一个构造函数需要一个 int,int 是缓冲区大小。感谢大家的贡献。

关于java - scan.hasNext 应该为真时为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com