簡體   English   中英

線程“ main”中的異常java.lang.NumberFormatException:對於輸入字符串:“;

[英]Exception in thread “main” java.lang.NumberFormatException: For input string: ";

我沒有編譯器錯誤,但是在運行程序並嘗試運行案例1(方法lesFraFil())時遇到此錯誤:

Exception in thread "main" java.lang.NumberFormatException: For input string: ";
"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at Hybelhus.lesFraFil(Oblig4.java:63)
        at Hybelhus.oversikt(Oblig4.java:134)
        at Hybelhus.meny(Oblig4.java:107)
        at Oblig4.main(Oblig4.java:23)

我曾嘗試問過我所有的同學,但沒有一個人能幫助我。

import easyIO.*;
class Oblig4{
public static void main(String[] args) {

    int[] antallHybler = new int[18];

    for (int i = 0; i < args.length; i++) {
        antallHybler[i] = Integer.parseInt(args[i]);
    }

    Hybelhus hh = new Hybelhus(antallHybler);
    hh.meny();
}
}class Hybelhus{


    Out skjerm = new Out();
    In lesFil = new In("Hybeldata.txt");
    In tast = new In();
    Out skrivTilFil = new Out("Hybeldata.txt", true);

    Hybel[][] hybler = new Hybel[3][6];


    void lesFraFil(){

    int maaned = lesFil.inInt(";");
    int aar = lesFil.inInt(";");
    int totFortjeneste = lesFil.inInt(";");
    int totAntallMåneder = lesFil.inInt(";"); 
    int månedsleieVanligHybel = lesFil.inInt(";"); 
    int månedsleieToppEtasjeHybel = lesFil.inInt(";");

    skjerm.outln(maaned + ", " +  aar + ", "  + totFortjeneste + ", " + totAntallMåneder + ", " +  månedsleieVanligHybel + ", " + månedsleieToppEtasjeHybel);

    while(!lesFil.endOfFile()){

        for(int i = 0; i < hybler.length; i++){
            for(int j = 0; j < hybler[i].length; j++){

                String tekst = lesFil.inLine();
                if(lesFil == null){
                    continue;
                } 
                String[] enArray = tekst.split("; ");

                hybler[i][j] = new Hybel();

                hybler[i][j].etasje = Integer.parseInt(enArray[0])-1;
                hybler[i][j].rom = enArray[1].charAt(0);
                hybler[i][j].leietager.saldo = Integer.parseInt(enArray[2]);                    
                hybler[i][j].leietager = new Student(enArray[3]);
            } 
        }       
    }   
}
    Etasjer[] etasje = new Etasjer[3];
    Hybelhus(int[] antallHybler) {
        for(int i = 0; i < etasje.length; i++){
            etasje[i] = new Etasjer(antallHybler[i]);
        }
    }

    void SkrivUt() {
        for(int i = 0; i < etasje.length; i++){
            System.out.println("hei");
        }
    }

    void meny() {

        int aksjon = 0;

        while (aksjon != 8) {


        skjerm.outln("\nMENY");
        skjerm.outln("1. Skriv oversikt");
        skjerm.outln("2. Registrer ny leietaker");
        skjerm.outln("3. Registrer betaling fra leietaker");
        skjerm.outln("4. Registrer frivillig utflytting");
        skjerm.outln("5. Månedskjøring av husleie");
        skjerm.outln("6. Kast ut leietakere");
        skjerm.outln("7. Øk husleien");
        skjerm.outln("8. Avslutt");     

        aksjon = tast.inInt();

        switch (aksjon) {
        case 1: oversikt(); break;
        case 2: regLeietaker(); break;
        case 3: regBetaling(); break;
        case 4: regUtflytting(); break;
        case 5: kjorHusleie(); break;
        case 6: kastUt(); break;
        case 7: okHusleie(); break;
        case 8:; avslutt(); break;
        default: System.out.println ("\nDu må taste inn et av de åtte valgene over"); 
        break;
            }
        }
    }
        void oversikt() {

            final int BREDDE1 = 10;
            final int BREDDE2 = 35;
            final int BREDDE3 = 25;

            skjerm.out("Hybel", BREDDE1);
            skjerm.out("Leietager", BREDDE2);
            skjerm.out("Saldo", BREDDE3);

            skjerm.outln("\n----------------------------------------------------\n");

            lesFraFil();

        }

        void regLeietaker(){
        }
        void regBetaling() {
        }

        void regUtflytting(){
        }

        void kjorHusleie() {
        }

        void kastUt(){
        }

        void okHusleie() {
        }

        void avslutt() {
        }

}

class Etasjer{
    Hybel[] hybelNavn;

    Etasjer(int antallHybler){
        hybelNavn = new Hybel[antallHybler];

        for(int i = 0; i < hybelNavn.length; i++){
            char c = (char) i;
            c += 'A';
            hybelNavn[i] = new Hybel();
        }

    }

}

class Hybel{
    int etasje;
    char rom;
    Student leietager;

    Hybel() {   
    }
}

class Student{
    int saldo;
    String studentNavn;
    Student(String studentNavn){
        this.studentNavn = studentNavn;
    }

}

我不明白lesFil.inInt(";");含義lesFil.inInt(";"); ,但對我來說,此方法顯然將字符串解析為一個int並返回一個int(根據我對方法名稱的最佳猜測,並且由於您說過程序沒有顯示任何編譯錯誤,這是我的最佳猜測)。

並且由於“;” 不是數字,則拋出NumberFormatException

您需要使用調試器。引發此異常的代碼行是Oblig4.java的63行。 由於格式問題,我不確定這是哪一行。 因此,請查看您的源代碼並轉到第63行,看看您在做什么。

我在猜

 hybler[i][j].etasje = Integer.parseInt(enArray[0])-1;

您可以做的是:

String temp = enArray[0];
System.out.println(temp);
int tempInt = Integer.parseInt(temp)-1;
System.out.println(tempInt);
hybler[i][j].etasje = tempInt;

然后您會看到發生了什么...(如果您不知道如何使用調試器!)

祝好運!

解決您的問題???

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM