我没有编译器错误,但是当我运行程序并尝试运行案例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;
}
}
答案 0 :(得分:1)
我不明白这意味着什么lesFil.inInt(";");
,但是对我来说这个方法显然会将一个字符串解析为一个int并返回一个int(从我最好的猜测方法的名称开始,因为你说你的程序没有显示任何编译错误)。
自“;”不是数字,它会抛出NumberFormatException
答案 1 :(得分: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;
你会看到发生了什么......(如果你不知道如何使用调试器!)
祝你好运!解决你的问题???