Java StringToDate和非静态变量

Java StringToDate和非静态变量,java,string,Java,String,由于行v=new Versenyzok()中的某些原因上面写着“环绕着…”,我想我需要一种方法来处理Versenyzok,我做到了,但问题仍然存在。 另一个问题在v=new-Versenyzok(adatok[0],adatok[1],adatok[2],adatok[3])行中。不兼容类型:字符串不能转换为日期。但是我找不到我想要制作字符串到日期格式的源代码 package vizsgamintaa; import java.io.File; import java.io.FileNotFou

由于行
v=new Versenyzok()中的某些原因上面写着“环绕着…”,我想我需要一种方法来处理
Versenyzok
,我做到了,但问题仍然存在。 另一个问题在
v=new-Versenyzok(adatok[0],adatok[1],adatok[2],adatok[3])行中。不兼容类型:字符串不能转换为日期。但是我找不到我想要制作字符串到日期格式的源代码

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<Versenyzok> versenyzok = new ArrayList<>();
        Feltolt(versenyzok);
    }
    private static void Feltolt(ArrayList<Versenyzok> versenyzok) throws ParseException{
    Versenyzok 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 == 4) {
                   v = new Versenyzok();
                   v.nev = adatok[0];
                    v.szuletes = df.parse(adatok[1]);
                     v.csapat = adatok[2];
                    if (adatok[3].length()<1) {
                        v.vbcim = 0;
                    } else {
                        v.vbcim = Integer.parseInt(adatok[3]);

                    }
                } else {
                     v = new Versenyzok(adatok[0],adatok[1],adatok[2],adatok[3]);
                }
                versenyzok.add(v);

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

}

   class Versenyzok {

       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 Versenyzok(String nev, Date szuletes, String csapat, int vbcim) {
       this.nev = nev;
       this.szuletes = szuletes;
       this.csapat = csapat;
       this.vbcim = vbcim;

   }
   public Versenyzok(){}
   }
}
package-vizsgamintaa;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.PrintStream;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.Scanner;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类Vizgamintaa{
静态SimpleDataFormat df=新SimpleDataFormat(“yyyy.MM.dd”);
静态扫描仪sc=新扫描仪(System.in);
公共静态void main(字符串[]args)引发ParseException、FileNotFoundException{
ArrayList versenyzok=新的ArrayList();
费尔托尔特(versenyzok);
}
私有静态void Feltolt(ArrayList versenyzok)抛出ParseException{
维塞尼佐克五世;
文件f=新文件(“versenyzok.txt”);
试一试{
扫描仪扫描=新扫描仪(f,“iso-8859-2”);
while(scan.hasNextLine()){
字符串sor=scan.nextLine();
字符串[]adatok=sor.split(“;”);
if(adatok.length==4){
v=新的Versenyzok();
v、 nev=adatok[0];
v、 szuletes=df.parse(adatok[1]);
v、 csapat=adatok[2];
如果(adatok[3].length()在
public-Versenyzok(String-nev,Date-szuletes,String-csapat,int-vbcim){
中,您将参数2作为日期。但是在
else
循环中,您将
adatok[1]
放入参数2中,这里它仍然是
字符串,因此您需要首先解析它。

我忘了键入
v=new-Versenyzo(adatok[0],df.parse(adatok[1]),adatok[2],Integer.parseInt(adatok[3]);


df.parse
Integer.parseInt

您有
public-Versenyzok(){}
,然后
}
在下一行。我知道,我以前用同样的方法编写了同样的代码,但这不是。是的,但是
字符串nev
索引是0,所以
日期szuletes
索引是0。我错了吗?示例字符串是什么(在拆分之前)这就是抛出这个错误的原因吗?我认为问题来自方法问题。
Sebastian Vettel;1987.07.03;Ferrari;4
这是使用的文本文件中的一个示例。因此当adatok.length小于4时会发生,因此它将抛出两个错误,1.导致
adatok[1]
被放入一个
Date
类型对象,而实际上它是一个字符串。2.由于
adatok
没有4个元素,尝试访问
adatok[3]
可能会引发错误。