0

我没有收到编译器错误,但是当我运行程序并尝试运行案例 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;
    }

}
4

2 回答 2

1

我不明白这是什么意思lesFil.inInt(";");,但对我来说,这个方法显然将一个字符串解析为一个 int 并返回一个 int (根据我对方法名称的最佳猜测,因为你说你的程序没有显示任何编译错误)。

并且因为“;” 不是数字,它会抛出一个NumberFormatException

于 2013-10-24T15:11:57.160 回答
0

您需要使用调试器。抛出此异常的代码行是 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;

你会看到发生了什么......(如果你不知道如何使用调试器!)

祝你好运!

解决你的问题???

于 2013-10-24T15:12:26.290 回答