Println方法在第二次运行中不起作用

时间:2018-12-15 18:43:58

标签: java

因此,自上次运行以来,我的Kiir方法不起作用。程序应将新值写入.txt文件,并将包含新值的整个文本还给它。

程序说问题出在

public static void Kiir(ArrayList<Versenyzo>versenyzok){
        for (Versenyzo f : versenyzok){
            System.out.println(f.toString());
        }

但是我看不到问题。任何想法?

public class VizsgaMintaA {

        static SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");
       static Scanner sc= new Scanner(System.in);
        /**
         * @param args the command line arguments
         * @throws java.text.ParseException
         * @throws java.io.FileNotFoundException
         */
        public static void main(String[] args) throws ParseException, FileNotFoundException {
            ArrayList<Versenyzo> versenyzok = new ArrayList<>();
            Feltolt(versenyzok);
            Kiir(versenyzok);
            Ujversenyzo(versenyzok);
            Kiir(versenyzok);
            Fajlbair(versenyzok);
        }

        private static void Feltolt(ArrayList<Versenyzo> versenyzok) throws ParseException{
        Versenyzo v = null;
        File f = new File("versenyzok.txt");
        try {
                Scanner scan = new Scanner(f, "iso-8859-2");
                while (scan.hasNextLine()) {
                    String sor = scan.nextLine();
                    String[] adatok = sor.split(";");
                    if (adatok.length == 3) {
                       v = new Versenyzo();
                       v.nev = adatok[0];
                        v.szuletes = df.parse(adatok[1]);
                        v.csapat = adatok[2];

                    } else if (adatok.length > 3) {
                         v = new Versenyzo (adatok[0],df.parse(adatok[1]),adatok[2]
                                 ,Integer.parseInt(adatok[3])
                         );
                    }
                    versenyzok.add(v);

                    }
            } catch (FileNotFoundException ex) {
                System.out.println("Nincs meg a fájl.");
            }

        }

        public static void Kiir(ArrayList<Versenyzo>versenyzok){
        for (Versenyzo f : versenyzok){
            System.out.println(f.toString());
        }
        }
        private static void Ujversenyzo(ArrayList<Versenyzo>versenyzok)throws ParseException{
            Versenyzo v = new Versenyzo();
            System.out.println("Adjon meg egy nevet:");
            v.nev=sc.nextLine();
            System.out.println("Adja meg a születési idejét:");
            v.szuletes=df.parse(sc.nextLine());
            System.out.println("Adja meg a csapatot:");
            v.csapat = sc.nextLine();
            System.out.println("Adja meg a vb címek számát:");
            v.vbcim = sc.nextInt();
            versenyzok.add(v);
        }
        public static void Fajlbair(ArrayList<Versenyzo>versenyzok) throws FileNotFoundException {
            PrintStream f2 = new PrintStream(new File ("versenyzok2.txt"));
        for (Versenyzo v : versenyzok){
        f2.println(v.toString());
        }
        }
        }

       class Versenyzo {

           String nev,csapat;
           Date szuletes;
           int vbcim;
           SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");

            @Override
       public String toString(){
       return "Versenyzo:" +nev + " Született:" + df.format(szuletes)+" Csapata:"+ csapat + " Vb címek:" + vbcim; 
       }
       public Versenyzo(String nev, Date szuletes, String csapat, int vbcim) {
           this.nev = nev;
           this.szuletes = szuletes;
           this.csapat = csapat;
           this.vbcim = vbcim;

       }
       public Versenyzo(){
       }
    }

1 个答案:

答案 0 :(得分:0)

首先检查传递给Kiir()的列表是否为null

public static void Kiir(ArrayList<Versenyzo> versenyzok){
    if (versenyzok == null)
        return;

    for (Versenyzo f : versenyzok){
        System.out.println(f);
    }
} 

我确实对Kiir()作了另一处更改。
我已从toString()中删除了f.toString(),因为您已对其进行了覆盖,所以这是多余的。

现在,在toString()类内部实现Versenyzo方法的唯一问题是null属性中是否存在szuletes值。
如果是这种情况,请更改为:

@Override
public String toString(){
    return "Versenyzo:" + nev + " Született:" + (szuletes == null ? "null" : df.format(szuletes)) + " Csapata:" + csapat + " Vb címek:" + vbcim;
}