问题描述
在名字之后,查理被打印出来,抛出输入不匹配异常,并说我在int扫描器中输入了一个字符串,但这确实是一个数字,所以为什么告诉我这是一个字符串?
这是扫描仪正在读取的我的文本文件: 爱丽丝,1234567891,优先级 布兰登,1987654321,高级 Charlie,7642874781,常规 丹尼(5274847643),高级
package file reading;
public class Customer {
private String name;
private int phoneNumber;
private int seatNumber;
String classification;
public Customer(String name,int phoneNumber,String classification)
{
this.name = name;
this.phoneNumber = phoneNumber;
this.classification = classification;
}
public String getName() {return name;}
public int getPhoneNumber() {return phoneNumber;}
public int getSeatNumber() {return seatNumber;}
public String getClassification() {return classification;}
public void setName(String name) {this.name = name;}
public void setPhoneNumber(int phoneNumber) {this.phoneNumber = phoneNumber;}
public void setSeatNumber(int seatNumber) {this.seatNumber = seatNumber;}
public void setClassification(String classification) {this.classification = classification;}
public String toString()
{
return "Name: " + name + "\nPhone Number: " + phoneNumber +
" \nclassification: " + classification +"\n";
}
}
package file reading;
import java.util.Scanner;
import java.io.*;
public class URLdissector
{
//-----------------------------------------------------------------
// Reads customer info from a file and prints their path components.
//-----------------------------------------------------------------
public static void main(String[] args) throws IOException
{
String customerInfo;
Scanner fileScan,infoScan;
String name = "",classification = "";
int phoneNumber = 0,seatNumber = 0;
try {
fileScan = new Scanner(new File("info.txt"));
while (fileScan.hasNext())
{
customerInfo = fileScan.nextLine();
System.out.println("Customer: " + customerInfo);
infoScan = new Scanner(customerInfo);
infoScan.useDelimiter(",");
// Print each part of the customer info
while (infoScan.hasNext()) {
name = infoScan.next();
//The error is hapening right here,right after printing out the name Charlie it won't
//print the phone number and stops everything.
phoneNumber = infoScan.nextInt();
classification = infoScan.next();
Customer customer = new Customer(name,phoneNumber,classification);
System.out.println("Customer " + customer);
}
System.out.println();
}
}catch (FileNotFoundException f){
System.out.println ("File not found");
}
}
感谢您阅读我的问题!
解决方法
在Java中,integer
数据类型为32-bit
,其最大值为2,147,483,647
,但您输入的字符串为“ 7642874781”,它将转换为7,642,874,781
。该值超过整数数据类型的最大值,从而导致错误。
考虑将long
数据类型与扫描仪对象的方法nextLong()
一起使用。