Java 意外输出。。。这个输出在任何方面都不是我所期望的。这是什么

Java 意外输出。。。这个输出在任何方面都不是我所期望的。这是什么,java,exception,Java,Exception,我希望给定的代码在这个项目的src文件夹中名为OutFile.txt的文本文件中写入以下内容(该文件的副本存在于项目的主目录中,其他文件夹如src和res也存在于此目录中): Value at: 0 = 0 Value at: 1 = 1 Value at: 2 = 2 但它不会在文件中写入任何内容。并在控制台中给出此输出: 0 0 0 0 0 代码:- package exception_handling_1; //Note: This class won't compile by d

我希望给定的代码在这个项目的src文件夹中名为OutFile.txt的文本文件中写入以下内容(该文件的副本存在于项目的主目录中,其他文件夹如src和res也存在于此目录中):

Value at: 0 = 0
Value at: 1 = 1
Value at: 2 = 2
但它不会在文件中写入任何内容。并在控制台中给出此输出:

0
0

0
0
0
代码:-

package exception_handling_1;

//Note: This class won't compile by design!
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class ListOfNumbers {

 private List<Integer> list;
 private static final int SIZE = 3;

 public ListOfNumbers () {
     list = new ArrayList<Integer>(SIZE);
     for (int i = 0; i < SIZE; i++) {
         list.add(new Integer(i));
     }
 }


 static PrintWriter out;

 public void writeList() {
     //PrintWriter out=null;
     try{
     out = new PrintWriter(new FileWriter("OutFile.txt"));
     for (int i = 0; i < SIZE; i++) {
         out.println("Value at: " + i + " = " + list.get(i));
     }
     }catch (Exception e){
         System.out.println("IO Exception!");
     }finally {
         out.close();
         }
 }


}
包异常处理\u 1;
//注意:这个类不会按设计编译!
导入java.io.FileWriter;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
公共类编号列表{
私人名单;
私有静态最终整数大小=3;
公开编号列表(){
列表=新的ArrayList(大小);
对于(int i=0;i

请告诉我为什么我得到这个输出。谢谢。

如果使用main方法实现,代码将正常工作

public class testRun{
  public static void main (String[] args){
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

如果使用main方法实现,代码将正常工作

public class testRun{
  public static void main (String[] args){
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

现在它工作正常,精确到您猜测的输出

package com.prectice;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;

    public class ListOfNumbers {

     private List<Integer> list;
     private static final int SIZE = 3;

     public ListOfNumbers () {
         list = new ArrayList<Integer>(SIZE);
         for (int i = 0; i < SIZE; i++) {
             list.add(new Integer(i));
         }
     }


     static PrintWriter out;

     public void writeList() {
         //PrintWriter out=null;
         try{
         out = new PrintWriter(new FileWriter("OutFile.txt"));
         for (int i = 0; i < SIZE; i++) {
             System.out.println("Value at: " + i + " = " + list.get(i));
         }
         }catch (Exception e){
             System.out.println("IO Exception!");
         }finally {
             out.close();
             }
     }
     public static void main (String[] args){
            ListOfNumbers list = new ListOfNumbers();
            list.writeList();
          }


    }
package.com.pretice;
导入java.io.FileWriter;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
公共类编号列表{
私人名单;
私有静态最终整数大小=3;
公开编号列表(){
列表=新的ArrayList(大小);
对于(int i=0;i
现在,它可以很好地工作,精确到您猜测的输出

package com.prectice;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;

    public class ListOfNumbers {

     private List<Integer> list;
     private static final int SIZE = 3;

     public ListOfNumbers () {
         list = new ArrayList<Integer>(SIZE);
         for (int i = 0; i < SIZE; i++) {
             list.add(new Integer(i));
         }
     }


     static PrintWriter out;

     public void writeList() {
         //PrintWriter out=null;
         try{
         out = new PrintWriter(new FileWriter("OutFile.txt"));
         for (int i = 0; i < SIZE; i++) {
             System.out.println("Value at: " + i + " = " + list.get(i));
         }
         }catch (Exception e){
             System.out.println("IO Exception!");
         }finally {
             out.close();
             }
     }
     public static void main (String[] args){
            ListOfNumbers list = new ListOfNumbers();
            list.writeList();
          }


    }
package.com.pretice;
导入java.io.FileWriter;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
公共类编号列表{
私人名单;
私有静态最终整数大小=3;
公开编号列表(){
列表=新的ArrayList(大小);
对于(int i=0;i
将一些
System.out.println(…)
放在您期望某些输出的点上,然后继续放进去,直到您找到一个不能提供预期输出的点。然后从那里找出代码部分不正确的原因。显示更多代码,特别是创建
编号列表
并调用
writeList()
的代码。如所述,加上启动它的
静态主代码,对我来说是正确的。必须有其他一些代码。只有在从未调用过
writeList()
或者之后文件被其他内容擦除时,才可能出现这种情况。您应该向我们展示更多。还要注意,如果您对
FileWriter
的调用引发异常,那么它将跳转到
catch
块,
out
仍将为
null
;一旦它报告了异常(打印出异常
e
,而不仅仅是说“exception”,这会非常有帮助和有用),它将在
out
上调用
close()
,除了第一个异常之外,还会给您一个
NullPointerException
。很好的做法是(就像在那个教程中所做的那样)对
out
执行空检查。在期望某些输出的点上输入一些
System.out.println(…)
,然后继续输入,直到找到一个不能提供期望输出的点。然后从那里找出代码部分不正确的原因。显示更多代码,特别是创建
编号列表
并调用
writeList()
的代码。如所述,加上启动它的
静态主代码,对我来说是正确的。必须有其他一些代码。只有在从未调用过
writeList()
或者之后文件被其他内容擦除时,才可能出现这种情况。您应该向我们展示更多。还要注意,如果您对
FileWriter
的调用引发异常,那么它将跳转到
catch
块,
out
仍将为
null
;一旦它报告了异常(打印出异常
e
,而不仅仅是说“exception”,这会非常有帮助和有用),它将在
out
上调用
close()
,除了第一个异常之外,还会给您一个
NullPointerException
。在
out