Java 如何替换文件中的行(如果是station)
我想创建一个文件,如果statment为true,则为该行提供值“1”,如果不是值“0”。开始时,我提供值0,如果为true,则必须替换为“1”。这必须在for循环中,并且每次都按照下面的代码检查stationJava 如何替换文件中的行(如果是station),java,file,bufferedreader,printwriter,Java,File,Bufferedreader,Printwriter,我想创建一个文件,如果statment为true,则为该行提供值“1”,如果不是值“0”。开始时,我提供值0,如果为true,则必须替换为“1”。这必须在for循环中,并且每次都按照下面的代码检查station import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.i
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {
public static void main(String[] args) {
File F=new File("D:\\File.txt");
try {
F.createNewFile();
BufferedReader br = new BufferedReader(new FileReader(F));
PrintWriter pw = new PrintWriter(new FileWriter(F));
for (int i=0;i<5;i++){
pw.println(0);
for ( int j=0;j<10;j++){
if(i==2) { //sample if statment
pw.write("1");
pw.flush(); }
if(j==3&&i==3) { //sample if statment
pw.write("1");
pw.flush(); }
}
pw.write("\n");
}
pw.close();
br.close();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
现在,我从我的代码中得到的是:
0
0
0
11111111110
10
- 为什么执行
pw.println(0)代码>与外部循环的每次迭代
pw.println(0)之间的区别是什么代码>和
pw.write(“1”)代码>
i==2
时,它打印一个0
和一个新行(如按Enter键)
然后它通过j
进入内部循环,执行10次。每次因为i
是2,它都在同一行上打印1
。这就是为什么你有10个1
然后它循环到达i==3
,并打印另一个0
和一个新行
然后,当内部循环到达j==3
时,它将打印1
[编辑]
调试器是你的朋友 欢迎来到堆栈溢出!请拿着这个,四处看看,仔细阅读,尤其是。哦,我的问题有什么问题吗?如果我必须改变什么,告诉我。实际上我在堆栈溢出中搜索,但找不到类似的东西。请注意,在您的代码中,i的任何值都将首先打印零。这就是为什么你的结果包含5个零。只有在j回路内部,才存在打印1的可能性。在j循环中应该使用if-elseif-else结构,并且只有在两个条件都不满足时才打印零。基本上,我的意思是,目前,即使满足条件,也会打印零。到目前为止,它看起来不错,只是你没有问特定的问题。另外,学习使用IDE的调试器(很好!)。然后,您可以一步一步地浏览代码,准确地看到在循环的每次迭代过程中发生了什么。也可以使用System.out.println将值打印到屏幕上。问题,你们用什么IDE开发?我想这应该是一个评论。你真的没有提供答案@Timothy。我相信帮助OP自己找到答案比简单地更正代码更有用。好吧,但是如何在每次Condition为真时替换该行?在开始时,我给每一行0,但基本思想是,如果该行为真,则替换该行。不要在开始时直接写入0。把它放在一个变量中。如果满足条件,请稍后将其更改为1。在每个循环的末尾写入变量。
0
0
0
11111111110
10