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 に答える