如何将String.split与文本文件一起使用以添加到简单数组中

时间:2022-08-16 19:34:49

My goal is to read in a text file and add each element to a simple array (the elements are separated by a comma). The last method readData() is the one I can't figure out.

我的目标是读入一个文本文件并将每个元素添加到一个简单的数组中(元素用逗号分隔)。最后一个方法readData()是我无法弄清楚的。

My code so far :

我的代码到目前为止:

public class VersionChooser {

private Scanner scan;
private StockManager aManager = new StockManager("StockManager");

public VersionChooser() {
    this.scan = new Scanner(System.in);
}

public void chooseVersion() {
    this.readData();
    this.runTextOption();
}

private void runTextOption() {
    StockTUI tui = new StockTUI(this.aManager);
}

public StockManager readData() {
    String fileName;
    System.out.println("Enter the name of the file to be used");
    fileName = this.scan.nextLine();
    System.out.println(fileName);
    try (final BufferedReader br = Files.newBufferedReader(new File("fileName").toPath(),
            StandardCharsets.UTF_16)) {
        for (String line; (line = br.readLine()) != null;) {
            final String[] data = line.split(","); 
            StockRecord record = new StockRecord(data[0], Double.valueOf(data[4])); 
            this.aManager.getStockList().add(record);
        }
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }   


    return null;
}
}

StockRecord :

股票记录:

public class StockRecord {
private String date;
private double closingPrice;

public StockRecord(String date, double closingPrice) {
    this.date = date;
    this.closingPrice = closingPrice;
}

public String getDate() {
    return this.date;
}

public double getClosingPrice() {
    return this.closingPrice;
}
public String toString() {
    return "On " + this.date + " this stock had a closing price of $" 
            + this.closingPrice;
}
}

1 个解决方案

#1


1  

Step1 : Read the file line by line.

步骤1:逐行读取文件。

Step2: Split the line by ","

第二步:用“,”拆分线

Step3 : Construct the String[] to StockRecord.

第3步:构造String []到StockRecord。

try (final BufferedReader br = Files.newBufferedReader(new File("stock.txt").toPath(),
            StandardCharsets.UTF_8)) {
        List<StockRecord> stocks = new ArrayList<StockRecord>();
                    br.readLine() ; // to avoid first line
        for (String line; (line = br.readLine()) != null;) { // first step
            final String[] data = line.split(",");       // second step
            StockRecord record = new StockRecord(data[0], Double.valueOf(data[1]));
            stocks.add(record);    // third step
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

Your stockRecord doesn't has all records. and for demo purpose i did assumed 2 element is closing price . change accordingly

您的stockRecord没有所有记录。为了演示目的,我确实假设2元素是收盘价。相应地改变

#1


1  

Step1 : Read the file line by line.

步骤1:逐行读取文件。

Step2: Split the line by ","

第二步:用“,”拆分线

Step3 : Construct the String[] to StockRecord.

第3步:构造String []到StockRecord。

try (final BufferedReader br = Files.newBufferedReader(new File("stock.txt").toPath(),
            StandardCharsets.UTF_8)) {
        List<StockRecord> stocks = new ArrayList<StockRecord>();
                    br.readLine() ; // to avoid first line
        for (String line; (line = br.readLine()) != null;) { // first step
            final String[] data = line.split(",");       // second step
            StockRecord record = new StockRecord(data[0], Double.valueOf(data[1]));
            stocks.add(record);    // third step
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

Your stockRecord doesn't has all records. and for demo purpose i did assumed 2 element is closing price . change accordingly

您的stockRecord没有所有记录。为了演示目的,我确实假设2元素是收盘价。相应地改变