Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,从文本文件读取(文本文件的格式很奇怪)_Java_Loops_Io - Fatal编程技术网

Java,从文本文件读取(文本文件的格式很奇怪)

Java,从文本文件读取(文本文件的格式很奇怪),java,loops,io,Java,Loops,Io,我知道如何从一个文本文件中读取数据,其中所有信息都由行分隔,但是这个文本文件的格式我很难读入并循环。我想做的是读取中的顶行,即产品数量,因此我想制作一个包含那么多位置的数组(而不是ArrayList),然后读取第2行中的产品代码,然后读取第3行中的价格,然后重复,直到所有产品都添加到数组中 这是文件 productData.txt(#分隔值) 我正在努力解决这个问题,希望你们中的一位能告诉我它是如何下降的,或者给我指出正确的方向。注意:不执行验证。它只在完美的情况下工作,即如果文件的结构与您提到

我知道如何从一个文本文件中读取数据,其中所有信息都由行分隔,但是这个文本文件的格式我很难读入并循环。我想做的是读取中的顶行,即产品数量,因此我想制作一个包含那么多位置的数组(而不是ArrayList),然后读取第2行中的产品代码,然后读取第3行中的价格,然后重复,直到所有产品都添加到数组中

这是文件

productData.txt(#分隔值)


我正在努力解决这个问题,希望你们中的一位能告诉我它是如何下降的,或者给我指出正确的方向。

注意:不执行验证。它只在完美的情况下工作,即如果文件的结构与您提到的完全相同

publicstaticvoidmain(字符串[]args){
试一试{
InputStreamReader in=新的InputStreamReader(新文件InputStream(“D:/productData.txt”);
BufferedReader buffer=新的BufferedReader(in);
字符串读取线;
int line_count=0;//文件中的行数
int num_of_prod=0;
浮动[]产品价格=空;
字符串[]产品代码=null;
而((readline=buffer.readline())!=null){
行数++;
//从文件中读取第一行
如果(行计数=1){
//读取第一行并创建数组
_prod的num_=Integer.parseInt(readline);
产品代码=新字符串[产品的数量];
产品价格=新浮动[产品数量];
}
else if(行计数=2){
prod_code=readline.split(“#”);
}
else if(行计数=3){
String[]String_price_arr=readline.split(“#”);
//将字符串数组转换为浮点数组以执行求和

对于(int i=0;i注意:不执行任何验证。它仅在完美的情况下工作,即如果文件与您提到的结构完全相同

publicstaticvoidmain(字符串[]args){
试一试{
InputStreamReader in=新的InputStreamReader(新文件InputStream(“D:/productData.txt”);
BufferedReader buffer=新的BufferedReader(in);
字符串读取线;
int line_count=0;//文件中的行数
int num_of_prod=0;
浮动[]产品价格=空;
字符串[]产品代码=null;
而((readline=buffer.readline())!=null){
行数++;
//从文件中读取第一行
如果(行计数=1){
//读取第一行并创建数组
_prod的num_=Integer.parseInt(readline);
产品代码=新字符串[产品的数量];
产品价格=新浮动[产品数量];
}
else if(行计数=2){
prod_code=readline.split(“#”);
}
else if(行计数=3){
String[]String_price_arr=readline.split(“#”);
//将字符串数组转换为浮点数组以执行求和

对于(int i=0;i注意:不执行任何验证。它仅在完美的情况下工作,即如果文件与您提到的结构完全相同

publicstaticvoidmain(字符串[]args){
试一试{
InputStreamReader in=新的InputStreamReader(新文件InputStream(“D:/productData.txt”);
BufferedReader buffer=新的BufferedReader(in);
字符串读取线;
int line_count=0;//文件中的行数
int num_of_prod=0;
浮动[]产品价格=空;
字符串[]产品代码=null;
而((readline=buffer.readline())!=null){
行数++;
//从文件中读取第一行
如果(行计数=1){
//读取第一行并创建数组
_prod的num_=Integer.parseInt(readline);
产品代码=新字符串[产品的数量];
产品价格=新浮动[产品数量];
}
else if(行计数=2){
prod_code=readline.split(“#”);
}
else if(行计数=3){
String[]String_price_arr=readline.split(“#”);
//将字符串数组转换为浮点数组以执行求和

对于(int i=0;i注意:不执行任何验证。它仅在完美的情况下工作,即如果文件与您提到的结构完全相同

publicstaticvoidmain(字符串[]args){
试一试{
InputStreamReader in=新的InputStreamReader(新文件InputStream(“D:/productData.txt”);
BufferedReader buffer=新的BufferedReader(in);
字符串读取线;
int line_count=0;//文件中的行数
int num_of_prod=0;
浮动[]产品价格=空;
字符串[]产品代码=null;
而((readline=buffer.readline())!=null){
行数++;
//从文件中读取第一行
如果(行计数=1){
//读取第一行并创建数组
_prod的num_=Integer.parseInt(readline);
产品代码=新字符串[产品的数量];
产品价格=新浮动[产品数量];
}
else if(行计数=2){
prod_code=readline.split(“#”);
}
else if(行计数=3){
String[]String_price_arr=readline.split(“#”);
//将字符串数组转换为浮点数组以执行求和

对于(int i=0;i如果您不想使用正则表达式,看起来您可以只获取每一行并按数字字符分割它们。下面是一个示例:

public class MyTest {
    public static final void main (String[] args)
    {
        String str = "10\n" +
            "PA/1234#PV/5732#Au/9271#DT/9489#HY/7195#ZR/7413#bT/4674#LR/4992#Xk/8536#kD/9767#\n" +
            "153#25#172#95#235#159#725#629#112#559#";

        String[] arr = str.split("\n");
        ArrayList<Object[]> al = new ArrayList<>();
        String[] product = arr[1].split("#");
        String[] price = arr[2].split("#");

        for (int i = 0; i < product.length; i++)
        {
            al.add(new Object[] { product[i], Integer.parseInt(price[2]) });
        }

        System.out.println(Arrays.deepToString(al.toArray()));
    }
}
公共类MyTest{
公共静态最终void main(字符串[]args)
{
String str=“10\n”+
“PA/1234#PV/5732#Au/9271#DT/9489#HY/7195#ZR/7413#bT/4674#LR/4992#Xk/8536#kD/9767#”+
"153#25#172#95#235#159#725#629#112#559#";
字符串[]arr=str.split(“\n”);
ArrayList al=新的ArrayList();
字符串[]product=arr[1]。拆分(“#”);
字符串[]price=arr[2]。拆分(“#”);
对于(int i=0;i
public class MyTest {
    public static final void main (String[] args)
    {
        String str = "10\n" +
            "PA/1234#PV/5732#Au/9271#DT/9489#HY/7195#ZR/7413#bT/4674#LR/4992#Xk/8536#kD/9767#\n" +
            "153#25#172#95#235#159#725#629#112#559#";

        String[] arr = str.split("\n");
        ArrayList<Object[]> al = new ArrayList<>();
        String[] product = arr[1].split("#");
        String[] price = arr[2].split("#");

        for (int i = 0; i < product.length; i++)
        {
            al.add(new Object[] { product[i], Integer.parseInt(price[2]) });
        }

        System.out.println(Arrays.deepToString(al.toArray()));
    }
}
File productData = new File("productData.txt");
Scanner sc = new Scanner(productData);
Integer size = new Integer(sc.nextLine());
Product[] products = new Product[size];
String[] code = new String[size];
int[] price = new int[size];
int countLine = 0;

while (sc.hasNextLine())
{
    int count = 0;
    String line = new String(sc.nextLine());
    for (String retval: line.split("#"))
    {
        if (countLine == 0) {
            code[count] = retval;
        } else if (countLine == 1) {
            price[count] = Double.parseDouble(retval);
        }
        count++;
    }
    countLine++;
}

for (int i = 0; i < size; i++)
{
    products[i] = new Product(code[i], price[i]);
}