文件输入/输出:国家

时间:2015-04-02 11:28:41

标签: java file input output

我正在进行一项练习,要求程序读取特定格式的文本文件,该文件将每行存储在ArrayList(Using Generics)中。

以下是包含首府城市,人口及所在国家/地区的文本文件:

London 7500000 UK
Rome 2700000 Italy
Paris 6000000 France
Berlin 4500000 Germany
Athens 3800000 Greece
Budapest 1700000 Hungary 
Lisbon 2800000 Portugal
Madrid 5600000 Spain
Oslo 1300000 Norway 
Copenhagen 1200000 Denmark 

这是代码:

class Countries
{
    public static void main(String[] param)
    {
        Vector v = new Vector();
        int input = Integer.parseInt(param[0]);
        try
        {
            FileReader file = new FileReader("data.txt");
            BufferedReader buffer = new BufferedReader(file);
            for (int i=0; i<10; i++)
            {
                String read = buffer.readLine();
                v.addElement(read);              
                System.out.println(v.elementAt(i));
            }
        }
        catch(IOException e)
        {
            System.out.println(e);
        }        
        getPopulation(v,input);      
    }

    public static void getPopulation(Vector v, int input)
    {
        Vector v1 = new Vector();        
       for(int i=0; i<10; i++)
       {
            String str = (String) v.elementAt(i);
            int num = str.indexOf(" ");
            int num2 = str.lastIndexOf(" ");
            String pop = str.substring(num+1,num2);
            pop.trim();
            v1.addElement(pop);
            System.out.println(v1.elementAt(i));
       }
       check(v1,input);
    }

    public static void check(Vector v1, int input)
    {
      int count = 0;
      for(int i=0; i <10; i++)
      {

          try 
          {
            String s = (String) v1.elementAt(i);
            int test = Integer.parseInt(s.trim());

            if (input >= test)
            {
            count++;
            }
          }
        catch (NumberFormatException e)
        {
            System.out.println("Error");
        }

      }

        System.out.println(count + " countries are greater than or equal to " + input);

    }
}  

程序应该读取每一行,并能够回答有多少大写的人口等于或大于命令行参数。

现在问题是在运行命令行参数时,例如{&#34; 5000000&#34;}它应该给3.但它给出4(这是错误的)。

如果有人能帮助我发现我出错的地方,我们将不胜感激。

0 个答案:

没有答案