Java scan.hasNext false应为true时为false
所以我是一个编程新手,我正试图找出 以下功能。问题在于Java scan.hasNext false应为true时为false,java,filewriter,bufferedwriter,Java,Filewriter,Bufferedwriter,所以我是一个编程新手,我正试图找出 以下功能。问题在于scan.hasNext()方法我有两个println 语句(一个在我进行扫描之后,另一个在第二个方法上)告诉我scan.hasNext()是否返回true或false。奇怪的是 现在的代码进入while循环,这是应该发生的,但是当我 删除其中一个println语句,它不会进入循环,另一个则会打印 语句告诉我scan.hasNext()为false 这很奇怪,因为除了删除打印语句,我什么都没做。此外,我 发现如果我为总共3条打印语句再添加一条
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;
}
好吧,我想起来了。vishal_aim的建议帮助我解决了这个问题。下一行
buff = new BufferedWriter(new FileWriter(filename), 1);
正在将我的文件截断回零大小。原因是我真的想这么做
buff = new BufferedWriter(new FileWriter(filename, true));
首先我放了一个,因为我认为java在要求布尔值时会自动使1为真。其次,我尝试使用FileWriter类的构造函数,它允许我附加到文件的末尾。如果文件名中没有包含true,则会生成一个新文件,截断文件中必须为0的任何内容。如果需要将布尔值放在BufferedWriter或FileWriter上,我已经忘记了这只是一个累人的错误。另外,如果您想知道BufferedWriter构造函数没有告诉我错误的原因,是因为它有一个构造函数接受int,int是缓冲区大小。感谢大家的贡献。您的两份打印声明在哪里?我只看到一个。显示输入文件的示例内容