Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件输入/输出:国家/地区_Java_File_Input_Output - Fatal编程技术网

Java 文件输入/输出:国家/地区

Java 文件输入/输出:国家/地区,java,file,input,output,Java,File,Input,Output,我正在做一个练习,要求程序读取特定格式的文本文件,该文件使用泛型将每一行存储在ArrayList中 以下是包含首都城市、人口和所在国家的文本文件: London 7500000 UK Rome 2700000 Italy Paris 6000000 France Berlin 4500000 Germany Athens 3800000 Greece Budapest 1700000 Hungary Lisbon 2800000 Portugal Madrid 5600000 Spain Os

我正在做一个练习,要求程序读取特定格式的文本文件,该文件使用泛型将每一行存储在ArrayList中

以下是包含首都城市、人口和所在国家的文本文件:

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);

    }
}  
程序应该读取每一行,并能够回答有多少大写字母的总体等于或大于命令行参数

现在的问题是,当运行命令行参数时,例如{5000000},它应该给出3。然而,它给出了4,这是错误的


如果有人能帮我找出哪里出了问题,我将不胜感激

如果input>=测试给出的城市人口少于input,您会意识到自己的情况,是吗?您以错误的方式解决了问题。不要将字符串存储在列表中,并在每次需要城市、人口等信息时强制解析它们,而应该在读取时解析这些行,将它们转换为类国家的实例,从而将国家存储在列表中。然后,您可以遍历列表,只需调用country.getPopulation就可以将人口作为整数。另外,忘记向量。自从Java2以后就不应该再使用它了。我们在Java8。使用ArrayList。