从文本文件中读取字符串并将其拆分为单独的数组列表并进行比较

时间:2016-11-27 02:23:23

标签: java file arraylist split output

我刚接触Java编程,并且在使用数组列表和比较解决问题时遇到了一些问题。下面的代码不是尝试完整的问题,但问题是:

基本上读取一个文本文件,旁边有一个电话号码和一个双倍值。 999-878-2233 37.23然后下一行将是999-889-4664 20.33。然后,如果用户输入的值超过25,则应打印第一行。另外,我最多只能循环10行。

到目前为止,我有这个。

public static void main(String[] args) throws IOException
{
  Scanner input = new Scanner (System.in);

  System.out.print ("Enter the filename: ");
  String fileName = input.nextLine();
  File file = new File(fileName);
  Scanner inputFile = new Scanner (file);
  String line;
  BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
  int i = 0;

    ArrayList<String> list = new ArrayList<String>();
    while(((line = bufferedReader.readLine()) != null) && i < 10) 
    {
      System.out.println(line);
      i++;
      list.add(line);
    }         
  String[] lineList = list.toArray(new String[0]);

  System.out.println (Arrays.toString(lineList));
}
}

我知道line.split(" "))的分割选项可能是最好的前进方式。我假设double值将被放入一个单独的数组列表中,然后与用户输入和旁边的电话号码进行比较。电话号码将保留一个字符串,并随之打印。

如果有人愿意,我感谢你的帮助。

=============================================== =

我使用不同的解决方案解决了这个问题。

import java.util.*;
import java.io.*;  
import java.text.DecimalFormat;
import java.util.regex.*;
public class labFinalA2
{
    public static void main(String[] args) throws IOException
    {
      Scanner input = new Scanner (System.in);
      int i = 0;
      double threshold;
      System.out.print ("Enter the filename: ");
      String fileName = input.nextLine();
      File file = new File(fileName);
      Scanner inputFile = new Scanner (file);
      String line;
      BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));

      System.out.print ("Cell bill threshold: ");
      threshold = input.nextDouble();

      System.out.println ("All cell phones bills at or above the threshold amount.");
      System.out.println ("      Number     Amount");

       while(((line = bufferedReader.readLine()) != null) && i < 20) 
        {
          i++;
          String str = line;
          Pattern p = Pattern.compile("(\\d+(?:\\.\\d+))");
          Matcher m = p.matcher(str);
          while(m.find()) 
          {
          double d = Double.parseDouble(m.group());
          if (d >= threshold)
          {
          String cellBill = Double.toString(d);
          String phone = line.replaceFirst(Pattern.quote(cellBill), "");
          System.out.println(phone + "     "+ d);
          }
          else
          {
           inputFile.close();
        }
    }
}
}
}

0 个答案:

没有答案