为什么我一直在我的阵列上接收inputmismatchexception?

时间:2017-09-25 19:51:33

标签: java arrays

我一直在运行这个对象数组,试图弄清楚我做错了什么,我看不出错误。该程序运行第一次迭代,引入奥地利及其所有后续信息,但不会移动到阵列的第二部分。我认为它可能是以某种方式从国家类中获取每个变量并使其成为阵列中的自己的位置但是这不可能是因为我已经将数组大小增加到64并且它仍然在奥地利结束时停止。我已经能够通过在添加每个项目之后放置打印语句来进一步了解它,并且由于某种原因它似乎在其中添加了一个未计入的空白行,我不知道为什么。任何可以给予的帮助将不胜感激。

这是我的测试代码,包含数据列表:

import java.util.Scanner;
import java.io.*;

public class Test  {
   public static void main (String [] args) throws IOException {
      final String INPUT_FILE = "CountriesInfo2.txt";

      FileReader inputDataFile = new FileReader (INPUT_FILE);
      Scanner read = new Scanner (inputDataFile);
      Countries[] c = new Countries[8];

      for (int i = 0; i < c.length; i++) {
         c[i] = new Countries();
         c[i].countryName = read.nextLine();
         c[i].latitude = read.nextLine();
         c[i].longitude = read.nextLine();
         c[i].countryArea = read.nextInt();
         c[i].countryPopulation = read.nextInt();
         c[i].countryGDP = read.nextDouble();
         c[i].countryYear = read.nextInt();
         sop ("" + c[i].countryName + "\n" + c[i].latitude+"\n"+c[i].longitude+"\n"+c[i].countryArea+"\n"+
         c[i].countryPopulation+"\n"+c[i].countryGDP+"\n"+c[i].countryYear);
      }// end for
   } // End Main
   public static void sop (String s) {
      System.out.println(s);
   } // End sop
} // end class

奥地利 47 20 N. 13 20 E 83871 8754513 417.2 2016 比利时 50 50 N. 04 00 E 30528 11491346 509.5 2016 捷克共和国 49 45 N. 15 30 E. 7886 10674723 350.7 2016 法国 46 00 N 02 00 E 643801 67106161 2734.0 2016

这个列表应该是每一位信息的一行,其中lat-long有两组双位数字和一个字母。

1 个答案:

答案 0 :(得分:0)

nextLine()在返回当前行后自动向下移动扫描仪。相反,我会建议你按照以下方式进行操作

  1. 使用String data = scanner.nextLine();
  2. 读取每一行
  3. 使用空格分隔符String[] pieces = data.split("\\s+");
  4. 拆分数据
  5. 通过将它们转换为国家属性来设置它们 他们合适的类型。

    例如。 c[i].countryName = pieces[0];

       `c[i].latitude = piece[1];`