【发布时间】:2014-03-21 03:33:32
【问题描述】:
public class Location {
private String city;
private double latitude;
private double longitude;
public Location(String aCity, double aLatitude, double aLongitude)
{
city = aCity;
latitude = aLatitude;
longitude = aLongitude;
}
void setLocation(String theCity)
{
city = theCity.trim();
}
void setLatitude(double lat)
{
latitude = lat;
}
void setLongitude(double long1)
{
longitude = long1;
}
public String getLocation()
{
return city;
}
public double getLatitude()
{
return latitude;
}
public double getLongitude()
{
return longitude;
}
public String tooString()
{
String result = String.format("City: %s (%1.3f; %1.3f)", city, latitude,longitude);
return result;
}
主程序:
public class Hmwk {
public static void main(String[] args) throws FileNotFoundException {
Scanner input=new Scanner (new File ("input.txt"));
while (input.hasNextLine())
{
String line=input.nextLine();
String[] tokens;
tokens = line.split("\t");
String city=tokens[0];
double lat=Double.parseDouble(tokens[1]);
double longy=Double.parseDouble(tokens[2]); //Error
Location loc=new Location(city,lat,longy);
loc.tooString();
}
}
我在主程序中收到了一个ArrayIndexOutOfBoundsException,我不太明白。
输入被制表符分割,即使它看起来不像...
St. Joseph, MO +39.76580 -94.85060
Shanghai,China +31.23300 +121.45000
Kansas_City,KS +39.11780 -94.64000
【问题讨论】:
-
您的文件数据是否有可能是脏的,例如而不是制表符还有其他分隔符?这可能会导致
tokens[i]失败 -
我不相信,我是否正确实施了一切?
-
打印出你的数组中的数据,这样你就可以确认你得到了三样东西。
System.out.println(Arrays.toString(tokens);你必须导入java.util.Arrays才能看到它。但是,这应该一些了解正在发生的事情。 -
我已经完全复制了这个并打印出了数组的所有内容。它们的长度都是 1,因为
tokens.split("\t");将它们拆分为不存在的制表符。因此,整条线被放入索引 0 并继续前进。 -
此外,您的数据甚至没有像使用制表符那样以清晰的线条格式化。我用实际的选项卡式输入完全重新创建了这个项目,它可以工作。你的输入有缺陷。我百分百确定。
标签: java string class parsing double