Home > OS >  Actual and formal argument lists differ in length error in main
Actual and formal argument lists differ in length error in main

Time:07-17

Im working on a project where I have 3 text files with data of doctors, patients and home visits. When Im trying to upload the doctors file, upload all the data to a new object I get an error:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Id_pacjenta Nazwisko Imie PESEL Data_urodzenia" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) at java.base/java.lang.Integer.parseInt(Integer.java:658) at java.base/java.lang.Integer.parseInt(Integer.java:776) at com.company.Main.main(Main.java:40)

Below I'll paste my main as well as the classes & a snapshot of the text file used for imports:

Could anyone advise how to avoid this issue? Thanks!

 public class Main {

    public static void main(String[] args) {

        List<Lekarz> lekarz = new ArrayList<>();

        try{
            File fileLekarze = new File("src/com/company/lekarze.txt");
            Scanner readerLekarze = new Scanner(fileLekarze);
            while(readerLekarze.hasNextLine()){
                String[] data =readerLekarze.nextLine().split(" ");
                lekarz.add(new Lekarz(Integer.parseInt(data[0]),data[1],data[2],data[3],new SimpleDateFormat("yyyy-MM-dd").parse(data[4]),data[5],data[6]));
            }
            readerLekarze.close();

        } catch (FileNotFoundException e) {
            System.out.println("Error File Lekarze");
            e.printStackTrace();
        } catch (ParseException e){
            e.printStackTrace();
        }

        List<Pacjenci> pacjent = new ArrayList<>();

        try{
            File pacjenciFile = new File("src/com/company/pacjenci.txt");
            Scanner readerPacjenci = new Scanner(pacjenciFile);
            while(readerPacjenci.hasNextLine()){
                String[] data = readerPacjenci.nextLine().split(" ");
                pacjent.add(new Pacjenci(Integer.parseInt(data[0]),data[1],data[2],data[3],new SimpleDateFormat("yyyy-MM-dd").parse(data[4])));
            }
            readerPacjenci.close();

        }catch (FileNotFoundException e) {
            System.out.println("Error File Pacjenci");
            e.printStackTrace();
        } catch (ParseException e){
            e.printStackTrace();
        }

    }
}

    public class Pacjenci {

    private int idPacjenta;
    private String nazwisko;
    private String imie;
    private String pesel;
    private Date dataUrodzenia;

    public Pacjenci(int idPacjenta, String nazwisko, String imie, String pesel, Date dataUrodzenia) {
        this.idPacjenta = idPacjenta;
        this.nazwisko = nazwisko;
        this.imie = imie;
        this.pesel = pesel;
        this.dataUrodzenia = dataUrodzenia;

    }

    public int getIdPacjenta() {
        return idPacjenta;
    }

    public void setIdPacjenta(int idPacjenta) {
        this.idPacjenta = idPacjenta;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public String getPesel() {
        return pesel;
    }

    public void setPesel(String pesel) {
        this.pesel = pesel;
    }

    public Date getDataUrodzenia() {
        return dataUrodzenia;
    }

    public void setDataUrodzenia(Date dataUrodzenia) {
        this.dataUrodzenia = dataUrodzenia;
    }
    

    @Override
    public String toString() {
        return "Pacjenci{"  
                "idPacjenta="   idPacjenta  
                ", nazwisko='"   nazwisko   '\''  
                ", imie='"   imie   '\''  
                ", pesel='"   pesel   '\''  
                ", dataUrodzenia="   dataUrodzenia  
                ", wizyty="  
                ", lekarze="  
                '}';
    }
}

public class Wizyty {
    private Lekarz idLekarza;
    private Pacjenci idPacjenta;
    private Date dataWizyty;

    public Wizyty(Lekarz idLekarza, Pacjenci idPacjenta, Date dataWizyty) {
        this.idLekarza = idLekarza;
        this.idPacjenta = idPacjenta;
        this.dataWizyty = dataWizyty;
    }

    public Lekarz getIdLekarza() {
        return idLekarza;
    }

    public void setIdLekarza(Lekarz idLekarza) {
        this.idLekarza = idLekarza;
    }

    public Pacjenci getIdPacjenta() {
        return idPacjenta;
    }

    public void setIdPacjenta(Pacjenci idPacjenta) {
        this.idPacjenta = idPacjenta;
    }

    public Date getDataWizyty() {
        return dataWizyty;
    }

    public void setDataWizyty(Date dataWizyty) {
        this.dataWizyty = dataWizyty;
    }

    @Override
    public String toString() {
        return "Wizyty{"  
                "idLekarza="   idLekarza  
                ", idPacjenta="   idPacjenta  
                ", dataWizyty="   dataWizyty  
                '}';
    }
}



     Id_pacjenta    Nazwisko    Imie    PESEL   Data_urodzenia
             100       Kowal    Waldemar 01211309876    2001-1-13

CodePudding user response:

Because of the data spacing in the file, try this:

while(readerLekarze.hasNextLine()){
     String line = readerLekarze.nextLine();
     // Remove leading and trailing whitespaces (if any).
     line = line.trim()
     // "\\s " Takes care of any multi-spacing within the data line when splitting.  
     String[] data =line.split("\\s "); 
     lekarz.add(new Lekarz(Integer.parseInt(data[0]),data[1],data[2],data[3],new SimpleDateFormat("yyyy-MM-dd").parse(data[4]),data[5],data[6]));
}

You could also just do:

String[] data = readerLekarze.nextLine().trim().split("\\s ");     

CodePudding user response:

As a complement to the @DevilsHnd, you only need to add a code to avoid the first line, because the first line is the "header information" of your file.

boolean headerRead = false;
while(readerLekarze.hasNextLine()) {
    if (!headerRead) {
        // extract the first line -> Id_pacjenta    Nazwisko    Imie    PESEL   Data_urodzenia
        readerLekarze.nextLine();
        headerRead = true;
        continue;
    }

    String line = readerLekarze.nextLine();
    // Remove leading and trailing whitespaces (if any).
    line = line.trim();
    // "\\s " Takes care of any multi-spacing within the data line when splitting.
    String[] data =line.split("\\s ");

    lekarz.add(new Lekarz(
            Integer.parseInt(data[0]),
            data[1],
            data[2],
            data[3],
            new SimpleDateFormat("yyyy-MM-dd").parse(data[4])));
}
  • Related