Java 如何将String.split与文本文件一起使用以添加到简单数组
我的目标是读入一个文本文件并将每个元素添加到一个简单数组中(元素之间用逗号分隔)。最后一种方法readData()是我无法理解的 到目前为止,我的代码是:Java 如何将String.split与文本文件一起使用以添加到简单数组,java,arrays,java.util.scanner,string-split,Java,Arrays,Java.util.scanner,String Split,我的目标是读入一个文本文件并将每个元素添加到一个简单数组中(元素之间用逗号分隔)。最后一种方法readData()是我无法理解的 到目前为止,我的代码是: public class VersionChooser { private Scanner scan; private StockManager aManager = new StockManager("StockManager"); public VersionChooser() { this.scan = new Scanne
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;
}
}
股票记录:
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:逐行读取文件 步骤2:将行拆分为“,” 步骤3:构造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();
}
try(final BufferedReader br=Files.newBufferedReader(新文件(“stock.txt”).toPath(),
标准字符集(UTF_8)){
列出股票=新的ArrayList();
br.readLine();//避免第一行
对于(字符串行;(line=br.readLine())!=null;){//第一步
最后一个字符串[]data=line.split(“,”;//第二步
StockRecord记录=新的StockRecord(数据[0],Double.valueOf(数据[1]);
stocks.add(record);//第三步
}
}捕获(IOE异常){
e、 printStackTrace();
}
你的股票记录并不是所有的记录。为了演示的目的,我假设2元素是收盘价。相应地更改:文件中的每一行有5个独立的数据点。我想使用scanner.NextLine()和String.split来提取所需的数据并将其添加到我的另一个类“StockRecord”中。你的
StockRecord
类是什么样的?所有的数据点都是指向同一个实例的数据点吗?这是文本文件9/24/2004 2004/2004 9/24/24/2004 12:24/2004 12:00:00:00 00:00上午,18.45、18.45、19.43、18.45、18.45、18.45、18.41、18.41、18.18.41、18.18.18.65、6.6.430626 6 6 6 6 6 6 6 6 6 6 6 6 6+7+7,7+07,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6.4.4.4.4.4.4.6.4.6.6.6.4.4.6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6+7+7+7+7+7+7+7+7,,,,,,,,,,2004年1月10日上午12:00:00,18.49,19.64,18.42,19.33,6.83976E+07,本方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方7.53,7.90538E+07,表示不同的股票编号。我添加的“|||||”是为了将它们分开,这样就不会使字符串变得混乱。拆分([\\\\]+”)?我还不太清楚您遇到了什么麻烦。您(正确地)说您需要使用nextLine()
和String#split
,那么您不确定哪些部分?日期、开盘、高点、低点、收盘、成交量、移动平均线50这是数字的顺序。谢谢,我需要做的只是拿出日期和收盘价。我忘了提到这一点。然后将数据[1]更改为数据[4],因为您的结束符是数组中的第四个元素(数组以0开头)。每当我在控制台中键入要选择的文件时,我总是收到一个错误。我有另一个名为StockManager的类,它保存着arraylist(我在VersionChooser的顶部声明了它),我是否需要使用它来添加数据?发布更新的代码以及输入内容。是的,如果您有从StockManager获取ArrayList的方法。然后像aManager.getStockList()那样使用它。添加(记录)我发布了readData()的新代码。文件名是“AppleStock.txt”,我尝试键入AppleStock和AppleStock.txt,但两次都会出错