java using append从文件的一行中提取数据

时间:2015-11-07 21:24:44

标签: java command-line append stringbuilder readfile

我对Java非常陌生,你可以从我的代码中看出来。欢迎任何帮助:)

我有一个包含以下行的文件:

文件中的列:7

确切文件数量(行):118

精确文件记录长度(可变块中的字节):52

我想使用append来提取标签后的数字,但它返回零,而不是标签后的实际数字。这就是我所拥有的:

   public int extractVariables(String aLine)
   {
    Scanner scan = new Scanner(actualFile);
    while(scan.hasNext())
    {
        String line = scan.nextLine();
        if(line.contains("Columns in File:"))
        {
            StringBuilder numOfVariables = new StringBuilder();
            for(int i = 16; i < line.length(); i++)
            {
                numOfVariables.append(charAt(i)).trim();
            }
      // check if the information is missing
                if(numOfVariables != null && !numOfVariables.equals(""))
                {
                    int variables = Integer.parseInt(numOfVariables);
                }
                else
                {
                    System.out.print("Number of varibales is missing!");
                }
            }
            return variables;
        }
    }

另外,我要求用户使用命令行参数输入文件,并将文件存储到actualFile中,如下所示:

      try{
          File actualFile = new File(args[0]);
          System.out.println("File was processed: true");
         }
      catch (ArrayIndexOutOfBoundsException e)
        {
            System.out.println("File was processed: false. Re-enter filename.");
            return;
        }

因此我将scanFile的actualFile用于打开文件并读取行,扫描程序是否读取了正确的文件?也许这就是该方法返回零的原因?

1 个答案:

答案 0 :(得分:0)

而不是做

for(int i = 16; i < line.length(); i++)
        {
            numOfVariables.append(charAt(i)).trim();
        }

使用nextInt()似乎更好; 所以,代码看起来像这样:

line.nextInt();

此外,要检查是否有号码或缺少号码,您可以使用:

if(line.hasNextInt()) {...}