![](/img/trans.png)
[英]java - Exception in thread “main” java.lang.NumberFormatException: For input string: “” at
[英]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.