Java 为什么for循环不写入第二个对象?
我试图创建一个程序,在用户的桌面上创建大量的.txt文件,并在每个文件中写入内容,但它只在第一个文件上写入内容,看起来第二个for循环不再工作 这是我的密码:Java 为什么for循环不写入第二个对象?,java,Java,我试图创建一个程序,在用户的桌面上创建大量的.txt文件,并在每个文件中写入内容,但它只在第一个文件上写入内容,看起来第二个for循环不再工作 这是我的密码: package main; import java.io.BufferedWriter; import java.io.FileWriter; import java.util.Scanner; public class Main { public static void main(String[] args) {
package main;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String userHome = System.getProperty("user.home");
String path = userHome + "/Desktop/test.txt";
try {
for (int j = 0; j < 10; j++) {
BufferedWriter br = new BufferedWriter(new FileWriter(userHome + "/Desktop/test" + j + ".txt"));
for (int i = 0; i < 10; i++) {
br.write(i);
br.newLine();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
packagemain;
导入java.io.BufferedWriter;
导入java.io.FileWriter;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串userHome=System.getProperty(“user.home”);
字符串路径=userHome+“/Desktop/test.txt”;
试一试{
对于(int j=0;j<10;j++){
BufferedWriter br=new BufferedWriter(新文件编写器(userHome+“/Desktop/test”+j+“.txt”);
对于(int i=0;i<10;i++){
br.写(i);
br.newLine();
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
bw.write(i)代码>这不会按预期打印数值
c-指定要写入的字符的int
因此,如果您确实需要打印数值0
到9
bw.write(i+48);
另外,请使用bw.close()
读者/作者使用中的一般注意事项
始终使用带有编码的写入器/读取器,并且不要假定为UTF-8。最好是显式地说明编码
假设您使用的是Java11
导入java.io.BufferedWriter;
导入java.io.FileWriter;
导入java.nio.charset.StandardCharset;
公共班机{
公共静态void main(字符串[]args){
最后一个字符串userHome=System.getProperty(“user.home”);
最终字符串路径=userHome+“/Desktop/”;
对于(int j=0;j<10;j++){
最终字符串文件=路径+“/test”+j+“.txt”;
try(final FileWriter fw=newfilewriter(文件,StandardCharsets.UTF_8);
最终缓冲写入程序bw=新缓冲写入程序(fw)){
对于(int i=0;i<10;i++){
write(i+48);//bw.write(String.valueOf(i));
换行符();
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
}
您的代码中有两个问题
for (int j = 0; j < 10; j++) {
BufferedWriter br = new BufferedWriter(new FileWriter(userHome + "/Desktop/test" + j + ".txt"));
for (int i = 0; i < 10; i++) {
br.write(String.valueOf(i)); // instead of br.write(i);
br.newLine();
}
br.close(); // close your writer
}
for(int j=0;j<10;j++){
BufferedWriter br=new BufferedWriter(新文件编写器(userHome+“/Desktop/test”+j+“.txt”);
对于(int i=0;i<10;i++){
br.write(String.valueOf(i));//代替br.write(i);
br.newLine();
}
br.close();//关闭编写器
}
e.printStackTrace()打印时是否有任何错误或异常?
没有,它只是毫无异常地执行。首先,putbr.close()
在for循环的末尾,哪个for循环?在for-i循环的内部结束括号之后,在for-j循环的外部结束括号之前当我们在纠正问题时,对于缓冲写入程序
添加bw
而不是br
,怎么样。我很想知道,如果我错了,为什么br
会有意义。@Harsh,谢谢你的反馈,我已经更新了答案(最初使用的是OP使用的确切变量)。