0

它比标题更复杂。我正在使用循环写入文件,然后我将使用 Scanner 类和 File 类读取文件,之后我想将类读取的数据存储到数组中。之后,用户将选择要删除的数组内的条目之一。

我知道如何声明数组和所有内容,但我被困在如何将文件的信息存储到数组中,然后删除一个条目(例如 L102),这是代码:请在运行代码后,将Pats文件复制到C:目录下。

package lecture;
import java.util.Scanner;
import java.io.*;
import java.text.DecimalFormat;

public class Lecture{

public static void main (String args[]) throws IOException
{

    PrintWriter f0 = new PrintWriter(new FileWriter("Pats.txt"));
    int n=0;

    while(n<15)
        {

        int L=1;
        n++;
        f0.print("L"+L+"0"+n+"  ");
        System.out.println("L"+L +" "+n);

        L=L+1;
        f0.print("L"+L+"0"+n+"  ");
        System.out.println("L"+L +" "+n);

        L=L+1;
        f0.print("L"+L+"0"+n+"  ");
        System.out.println("L"+L +" "+n);

        }

        File Plots = new File("C:\\Pats.txt");
        Scanner ReadFile = new Scanner(Plots);
            while(ReadFile.hasNext())
            {

                String str = ReadFile.nextLine();
                System.out.println(str);

            }
         ReadFile.close();



f0.close();
}
}
4

2 回答 2

0

我不确定你的思路是否是最佳的,但在你的while循环中,你可以有一些类似的东西:

while(ReadFile.hasNext())
{

     String str = ReadFile.nextLine();
     System.out.println(str);
     lines.add(str);
}

WherelinesArrayList在循环之外声明的。

要从中删除,您所要做的就是让用户选择index,然后执行lines.remove(index)或让用户选择String,在这种情况下您可以执行lines.remove(string).

于 2013-11-05T08:46:33.403 回答
0

据我了解您的问题,您想将数据从文件读取到数组中,然后从该数组中删除任何元素。所以你可以这样做,

  • 读取数据到数组

将文件中的数据逐行读取到 StringBuilder

File file = new File("Pats.txt");
Scanner sc = new Scanner(file);
StringBuilder sb = new StringBuilder();
while (sc.hasNextLine()) {
    sb.append(sc.nextLine());
}
sc.close();

拆分数据并将结果分配给数组

final String readStr = sb.toString();
String[] array = readStr.split("  ");
  • 从数组中删除一个元素

由于我们无法调整 java 数组的大小而您仍想使用数组,因此您可以使用Apache CommonsLang 组件从这里下载 jar 。请参阅此处的javadoc 。

array = ArrayUtils.removeElement(array, "L102");
于 2013-11-06T08:54:26.777 回答