首页 > 解决方案 > if/else 方法运行不正常

问题描述

我想创建一个方法,vbcim如果 value 不在,则显示为 0,如果versenyzok.txt找到 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它说。

标签: javaif-statement

解决方案


首先你检查:

if (adatok.length == 3)

else你认为理所当然的部分length中,至少是4,但似乎不是。
也许它小于2,所以ArrayIndexOutOfBoundsException当你尝试访问时会得到adatok[3]
你应该改成这样:

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

推荐阅读