if / else方法无法正常运行

时间:2018-12-15 09:22:16

标签: java if-statement

我想创建一个方法,如果value不位于vbcim中,则将versenyzok.txt显示为0,如果找到value,则显示实际值。 我误解了某些内容,并且Feltolt方法无法正常运行。

它应该列出来自文本文件的结果。如果没有找到第4个值,则将其设置为0,如果也找到它,则将其列出。

  package vizsgamintaa;
    import java.io.File;
    import java.io.FileNotFoundException;
    //import java.io.PrintStream;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Scanner;
    //import java.util.logging.Level;
    //import java.util.logging.Logger;

    public class VizsgaMintaA {

        static SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");
       static Scanner sc= new Scanner(System.in);

        public static void main(String[] args) throws ParseException, FileNotFoundException {
            ArrayList<Versenyzo> versenyzok = new ArrayList<>();
            Feltolt(versenyzok);
            Kiir(versenyzok);
        }
        private static void Feltolt(ArrayList<Versenyzo> versenyzok) throws ParseException{
        Versenyzo v;
        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];
                         if (adatok[3].length()==0 )  {

                            v.vbcim = 0; 
                        } 
                         else {
                            v.vbcim = Integer.parseInt(adatok[3]);
                        }
                    } else {
                         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());
        }
        }
    }
       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(){
       }
    }

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

部分无法正常工作。 ArrayIndexOutOfBoundsException说。

1 个答案:

答案 0 :(得分:1)

首先检查:

if (adatok.length == 3)

,在else部分中,您认为length至少为4,但事实并非如此。
也许它小于2,所以当您尝试访问ArrayIndexOutOfBoundsException时会得到adatok[3]
您应该更改为以下内容:

if (adatok.length == 3) {
    //......
} else if (adatok.length > 3) {
    //......
} else {
    //......
}