从java中的文件获取输入时获取异常

时间:2016-04-22 15:43:19

标签: java arrays java.util.scanner

我使用过扫描器类从给定的文本文件中获取输入。文件格式如下:

NAME: burma14
TYPE: TSP
COMMENT: 14-Staedte in Burma (Zaw Win)
DIMENSION: 5
EDGE_WEIGHT_TYPE: GEO 
NODE_COORD_SECTION
1  16.47       96.10
2  16.47       94.44
3  20.09       92.54
4  22.39       93.37
5  25.23       97.24

我的示例代码片段如下:

public static void main(String[] args) {
    try 
    {
        Scanner in = new Scanner(new File("burma14.tsp"));

        String line = "";
        int n;

        //three comment lines
        in.nextLine();
        in.nextLine();
        in.nextLine();
        //get n
        line = in.nextLine();
        line = line.substring(11).trim();
        n = Integer.parseInt(line);
        City[] city= new City[n];
        for (int i = 0; i < n; i++) {
            city[i]= new City();
        }

        //System.out.println("" +n);

        //two comment lines
        in.nextLine();
        in.nextLine();


        for (int i = 0; i < n; i++) 
        {
            in.nextInt();
            city[i].x =  in.nextInt();
            city[i].y =  in.nextInt();
            TourManager.addCity(city[i]);
        }
    } 
    catch (Exception e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

基本上我在这里所做的就是从DIMENTION行中获取值,并根据这一点,我将不同城市的x和y坐标存储到不同的城市对象中。

但是我得到以下例外:

java.util.InputMismatchException

在该行:

city[i].x =  in.nextInt();

我需要做出任何改变吗?

城市课程如下:

public class City {
int x;
int y;

// Constructs a randomly placed city
public City(){

 }

// Constructs a city at chosen x, y location
public City(int x, int y){
    this.x = x;
    this.y = y;
}

// Gets city's x coordinate
public int getX(){
    return this.x;
}

// Gets city's y coordinate
public int getY(){
    return this.y;
}
}

1 个答案:

答案 0 :(得分:5)

文件中的那些坐标不是整数。我不希望nextInt用他们做你想做的事。试试nextFloat

[已编辑添加:]实际上,nextDouble可能是一个更好的主意。