2013-10-24 46 views
0

我沒有得到編譯器錯誤,但我得到這個時,我運行該程序,並試圖運行情況1,方法lesFraFil():線程「主」java.lang.NumberFormatException中的異常:對於輸入字符串:「;

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; 
    } 

} 
+1

哪一行是'在Hybelhus.lesFraFil(Oblig4.java:63)'? (Oblig4.java,第63行) –

+1

你的輸入數據是什麼樣的? 「分裂可能會更好」;「 (沒有空格),然後在調用Integer.parseInt之前修剪這些字符串。 –

+0

您能否請您在評論中註明發生異常的行。 –

回答

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; 

你會看到發生了什麼......(如果你不知道如何使用調試器!)

祝你好運!

解決你的問題?

1

我不明白這是什麼意思lesFil.inInt(";");,但對我來說這種方法顯然解析字符串到一個int並返回一個int(從我最好的方法的名稱猜測,因爲你說喲你的程序不會顯示任何編譯錯誤)。

由於「;」不是一個數字,它拋出一個NumberFormatException

+0

inInt()是他的類中的一個方法,其中因爲構造函數需要一個文本文件,所以我猜測「;」傳入的字符串是分隔符字符。它可能在這裏發生錯誤......因爲63行沒有任何內容;-) – pengibot

相關問題