在java中读取了一个文本文件之后,如何将读取的内容从读取文本文件的函数传递给同一类中的其他函数?

在java中读取了一个文本文件之后,如何将读取的内容从读取文本文件的函数传递给同一类中的其他函数?,java,text-files,tar,Java,Text Files,Tar,下面是一段代码,它完成两件事-函数readBCInputDataFromTextFile读取文本文件,并将读取的数据存储在变量textData中,该变量为字符串数组(即字符串[])。数组大小使用int变量numOfLines填充(同样在函数readBCInputDataFromTextFile中)。这个功能工作得很好 代码所做的第二件事(在函数checkBCInput中)是使用正则表达式分离数据,并将其存储在4个“容器”(都是向量)中:bcStringConstant、bcNameVec、bcT

下面是一段代码,它完成两件事-函数readBCInputDataFromTextFile读取文本文件,并将读取的数据存储在变量textData中,该变量为字符串数组(即字符串[])。数组大小使用int变量numOfLines填充(同样在函数readBCInputDataFromTextFile中)。这个功能工作得很好

代码所做的第二件事(在函数checkBCInput中)是使用正则表达式分离数据,并将其存储在4个“容器”(都是向量)中:bcStringConstant、bcNameVec、bcTempVec和bcHTCVec

现在我的问题是:如何将变量textData传递给函数checkBCInput。如果我将两个函数中的代码合并到一个单独的java文件中,那么代码在执行时就可以工作。但是这种让事情运转起来的方式不是很好,因为它会让人痛苦。因此,我需要将代码分成两个函数——一个函数读取文本文件并将读取的内容传递给第二个函数,第二个函数使用regex将读取的数据存储到特定的容器中

我尝试从readBCInputDataFromTextFile返回textData,但在我正在运行的当前模拟中,这不起作用。我还试图将读取的数据传递给checkBCInput,但这会导致另一条错误消息:“找不到symbol:symbol textData”。第二种方法(如下粗体所示)将起作用,但我还看不到解决方案:-/

/*
 * inputReader
 * Last Revision: July 19, 2012.
 */
// package below is specific to software
package macro;

import java.util.*;
import java.text.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// Imports below are specific to the software
import star.base.neo.*;
import star.base.report.*;
import star.common.*;
import star.energy.*;
import star.flow.*;
import star.keturb.*;
import star.material.*;
import star.meshing.*;
import star.metrics.*;
import star.prismmesher.*;
import star.resurfacer.*;
import star.segregatedenergy.*;
import star.segregatedflow.*;
import star.solidmesher.*;
import star.trimmer.*;
import star.turbulence.*;
import star.vis.*;

// base class (StarMacro) is derived from software 
public class inputReader extends StarMacro {
/*************************************************** 
* 
* Global definitions
* 
***************************************************/
// Print output to screen?
int print_to_screen = 0;

// Variables to store BCs             

int noOfBounds = 0;
String inputBCTextFile = null;

Vector bcStringConstant = new Vector();
Vector bcNameVec = new Vector();
Vector bcTempValVec = new Vector();
Vector bcHTCValVec = new Vector();

public void execute(){
    // does nothing but function is required
}

public void readBCInputDataFromTextFile(String inputBCTextFile){

/*  
* READ INPUT FILE CONTENTS
*/

File dir = new File(System.getProperty("user.dir").toString() + File.separatorChar);  
if(print_to_screen == 0){
    sim.println("Directory where input text file is located: " + dir);
}
else{
    System.out.println("Directory where input text file is located: " + dir);
}

this.inputBCTextFile = inputBCTextFile;

if(print_to_screen == 0){
    sim.println("File name is: " + inputBCTextFile);
}
else{
    System.out.println("File name is: " + inputBCTextFile);
}


BufferedReader bf = null;        

try{
    bf = new BufferedReader(new FileReader(inputBCTextFile));

    if(print_to_screen == 0){
        sim.println("FILE EXISTS!!");
    }
    else{
        System.out.println("FILE EXISTS!!");
    }

}

catch (FileNotFoundException e){

    if(print_to_screen == 0){
        sim.println("FILE NOT FOUND!!!");
    }
    else{
        System.err.println("FILE NOT FOUND!!!");
    }

    e.printStackTrace();
}

int numOfLines = 0;
String aLine;

try{
    while (( aLine = bf.readLine()) != null){
        numOfLines++;
    }
} 
catch (IOException e){
    if(print_to_screen == 0){
        sim.println("FILE NOT READ => NUMBER OF LINES IN FILE SET TO NULL");
    }
    else{
        System.err.println("FILE NOT READ => NUMBER OF LINES IN FILE SET TO NULL");
    }
    e.printStackTrace();

}

try{
    bf.close();
}
catch (IOException e){
    if(print_to_screen == 0){
        sim.println("FILE NOT CLOSED PROPERLY!!!");
    }
    else{
        System.err.println("FILE NOT CLOSED PROPERLY!!!");
    }

    e.printStackTrace();
}
BufferedReader textReader = null;

try{
    textReader = new BufferedReader(new FileReader(inputBCTextFile));
    if(print_to_screen == 0){
        sim.println("READING INPUT DATA FROM TEXT FILE");
    }
    else{
        System.out.println("READING INPUT DATA FROM TEXT FILE");
    }

} 
catch (FileNotFoundException e){
    if(print_to_screen == 0){
        sim.println("FILE NOT FOUND!!!");
    }
    else{
        System.err.println("FILE NOT FOUND!!!");
    }

    e.printStackTrace();
}

String[] textData = new String[numOfLines];

try{
for (int i = 0; i < numOfLines; i++){
    textData[i] = textReader.readLine();
    }
}
catch (IOException e){
    if(print_to_screen == 0){
        sim.println("FILE NOT READ!!!");
    }
    else{
        System.err.println("FILE NOT READ!!");                
    }

    e.printStackTrace();
}

 **checkBCInput(textData);**

try{
    if(print_to_screen == 0){
        sim.println("FILE READ AND CLOSED");
    }
    else{
        System.out.println("FILE READ AND CLOSED");
    }

    textReader.close();
    }
catch (IOException e){
    if(print_to_screen == 0){
        sim.println("FILE NOT CLOSED PROPERLY!!!");
    }
    else{
        System.err.println("FILE NOT CLOSED PROPERLY!!!");
    }

    e.printStackTrace();
   }

 }

public void checkBCInput(String[] textData){
    Pattern inputBCTextFileData = Pattern.compile("(.*)\t(.*)\t-?((\\d+\\.\\d*|\\d*\\.\\d+)|\\d+)\t-?((\\d+\\.\\d*|\\d*\\.\\d+)|\\d+)");

for (int i =0; i < textData.length; i++){
    Matcher inputBCTextFileDataMatcher = inputBCTextFileData.matcher(textData[i]);

    if(inputBCTextFileDataMatcher.find()){
        // 1st match is variable name
            bcStringConstant.add(inputBCTextFileDataMatcher.group(1)); // this is the 1st column in the text file
        bcNameVec.add(inputBCTextFileDataMatcher.group(2));
        bcTempValVec.add(inputBCTextFileDataMatcher.group(4)); // gets numbers in decimal notation
        bcHTCValVec.add(inputBCTextFileDataMatcher.group(6)); // gets numbers in decimal notation
    }
 }

 }  
/*
*输入读取器
*最后修订:2012年7月19日。
*/
//下面的软件包是特定于软件的
包宏;
导入java.util.*;
导入java.text.*;
导入java.io.*;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
//下面的导入是特定于软件的
导入star.base.neo.*;
导入star.base.report.*;
进口明星。普通。*;
进口星空。能源。*;
进口星空。流量。*;
进口星号。凯图尔。*;
进口星。材料。*;
进口星。啮合。*;
导入star.metrics.*;
进口星形棱镜。*;
进口明星。重新露面。*;
进口star。电能。*;
导入星型。分离流。*;
进口星。solidmesher。*;
进口星型微调器。*;
进口星空。湍流。*;
进口star.vis.*;
//基类(StarMacro)派生自软件
公共类inputReader扩展了StarMacro{
/*************************************************** 
* 
*全球定义
* 
***************************************************/
//打印输出到屏幕?
int print_to_screen=0;
//用于存储BCs的变量
int noOfBounds=0;
字符串inputBCTextFile=null;
向量bcStringConstant=新向量();
向量bcNameVec=新向量();
向量bcTempValVec=新向量();
向量bcHTCValVec=新向量();
public void execute(){
//除了所需的功能外,什么也不做
}
公共无效readBCInputDataFromTextFile(字符串inputBCTextFile){
/*  
*读取输入文件内容
*/
File dir=新文件(System.getProperty(“user.dir”).toString()+File.separatorChar);
如果(打印到屏幕==0){
sim.println(“输入文本文件所在的目录:“+dir”);
}
否则{
System.out.println(“输入文本文件所在的目录:“+dir”);
}
this.inputBCTextFile=inputBCTextFile;
如果(打印到屏幕==0){
sim.println(“文件名为:”+inputBCTextFile);
}
否则{
System.out.println(“文件名为:”+inputBCTextFile);
}
BufferedReader bf=null;
试一试{
bf=新的BufferedReader(新文件读取器(inputBCTextFile));
如果(打印到屏幕==0){
sim.println(“文件存在!!”;
}
否则{
System.out.println(“文件存在!!”;
}
}
catch(filenotfounde异常){
如果(打印到屏幕==0){
sim.println(“未找到文件!!!”;
}
否则{
System.err.println(“未找到文件!!!”;
}
e、 printStackTrace();
}
int numOfLines=0;
弦线;
试一试{
而((aLine=bf.readLine())!=null){
numOfLines++;
}
} 
捕获(IOE异常){
如果(打印到屏幕==0){
sim.println(“文件未读取=>文件中的行数设置为空”);
}
否则{
System.err.println(“文件未读取=>文件中的行数设置为NULL”);
}
e、 printStackTrace();
}
试一试{
bf.close();
}
捕获(IOE异常){
如果(打印到屏幕==0){
sim.println(“文件未正确关闭!!!”;
}
否则{
System.err.println(“文件未正确关闭!!!”;
}
e、 printStackTrace();
}
BufferedReader textReader=null;
试一试{
textReader=新的BufferedReader(新的文件读取器(inputBCTextFile));
如果(打印到屏幕==0){
sim.println(“从文本文件读取输入数据”);
}
否则{
System.out.println(“从文本文件读取输入数据”);
}
} 
catch(filenotfounde异常){
如果(打印到屏幕==0){
sim.println(“未找到文件!!!”;
}
否则{
System.err.println(“未找到文件!!!”;
}
e、 printStackTrace();
}
String[]textData=新字符串[numOfLines];
试一试{
对于(int i=0;iString[] textData = readBCInputDataFromTextFile(...);
checkBCInput(textData);