我刚接触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();
}
}
}
}
}