#java
#java
Вопрос:
public void getConformFileDate(int year,int month,int date,int numOfday,int sr,int dr,int tr,int fr,int kr,int qr){
String PIN = "" ; String check_in = ""; String NDates =""; String Rmonth = "" ; String Ryear = "" ;String people = "" ; String price = "" ;
String single = "" ; String doub = ""; String triple =""; String fam = "" ; String king = "" ;String queen = "" ;
try{
x = new Scanner(new File(conf));
x.useDelimiter("[,n]");
while(x.hasNext()){
PIN = x.next();
check_in = x.next();
NDates = x.next();
Rmonth = x.next();
Ryear = x.next();
people = x.next();
price = x.next();
single = x.next();
doub = x.next();
triple = x.next();
fam = x.next();
king = x.next();
queen = x.next();
checkWithConformFile(Ryear,Rmonth,check_in,NDates,year,month,date,numOfday,single,doub,triple,fam,king,queen,sr,dr,tr,fr,kr,qr);
//sumcroom = sumcroom croom;
}
x.close();
}
catch(Exception e){
System.out.println(e);
}
}
после того, как я преобразовал некоторые строковые значения (например, Rmonth, Ryear) в тип int и сравнил с моими входными значениями.
Если моего входного значения нет в моем текстовом файле, оно выдает истинный результат. Но мои входные значения находятся в моем текстовом файле, это выдает ошибку.
ошибка: «Исключение ava.lang.NumberFormatException: для входной строки: «3
мой текстовый файл:
000001,2,7,9,2020,1,8000,1,0,0,0,0 000002,1,5,9,2020,2,12000,1,1,0,0,0 000003,9,12,10,2020,5,26000,1,0,0,1,0,0 введите описание изображения здесь
Ответ №1:
Проблема:
В вашем коде (показано ниже) вы вызываете next()
13 раз для одного вызова x.hasNext()
, и поэтому только первый вызов next()
т.е. PIN = x.next();
Будет действительным, в то время как другие могут быть недействительными, потому x.hasNext()
что для них не проверяется.
while(x.hasNext()) {
PIN = x.next();
check_in = x.next();
...
...
...
checkWithConformFile(Ryear,Rmonth,check_in,NDates,year,month,date,numOfday,single,doub,triple,fam,king,queen,sr,dr,tr,fr,kr,qr);
}
Решение:
Вам нужно вызывать x.hasNext()
перед каждым вызовом next()
, как показано ниже:
while(x.hasNext()) {
PIN = x.next();
if(x.hasNext()){
check_in = x.next();
}
if(x.hasNext()){
NDates = x.next();
}
...
...
...
checkWithConformFile(Ryear,Rmonth,check_in,NDates,year,month,date,numOfday,single,doub,triple,fam,king,queen,sr,dr,tr,fr,kr,qr);
}
Комментарии:
1. Большое спасибо, брат.
2. @ Арвинд Кумар Авинаш. Спасибо, брат. Я сделаю это.
Ответ №2:
Ваша строка не может быть преобразована в число. Если ваша строка равна «3, то она недопустима как целое число.