如何在Java应用程序中解析文本文件中的int或double值

Yatish Bathla

我想将特定值从文本文件复制到Java应用程序中的Arraylist。这是我的文本文件(以test.text的形式存储在我的桌面中)

String name = carrot;
double unit_price = 200;
int unit = 10;

我想将这个值存储在Arraylist中,该值在我的主应用程序中显示如下:

package com.main;
import com.collection.Ingridient;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class FileReaderApp {


    public static void main(String[] args) throws FileNotFoundException, IOException {
        Ingridient i_one = new Ingridient();
        ArrayList<Ingridient> db = new ArrayList<Ingridient>();
        FileReader fin = new FileReader("/home/yati/Desktop/test");
        Scanner src = new Scanner(fin);
// Read the ingridient from text file.
        while (src.hasNext()) {
            if (src.hasNext()) {
                i_one.setName(src.next());
                System.out.println("Name: " +src.next());
            } else
                if(src.hasNextDouble()) {
              i_one.setUnit_price(src.nextDouble());
              System.out.println("Unit Price: " +src.nextDouble());
            }
                else if (src.hasNextInt()) {
                  i_one.setUnit(src.nextInt());
                  System.out.println("Unit: " +src.nextInt());
                } else {
                    System.out.println("File format error.");
                    return;
                }
            db.add(i_one);
        }
        fin.close();

    }

}

她的Ingridient课有以下代码:

package com.collection;
public class Ingridient {
    String name;
    Double unit_price;
    int unit;

    public Ingridient() {
        name = null;
        unit_price = null;
        unit = 0;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setUnit_price(Double unit_price) {
        this.unit_price = unit_price;
    }

    public void setUnit(int unit) {
        this.unit = unit;
    }    

}

我的问题是我的应用程序只能在Ingridient对象中存储名称,而不能在unit和unit_price中存储任何值。获得的输出是:在此处输入图片说明我知道我在某个地方犯错,但是我无法解决此问题。有什么建议吗?

提图斯

这应该做到这一点:

public static void main(String[] args) throws IOException {
    String content = "String name = carrot;\ndouble unit_price = 200;\nint unit = 10;";
    try (Scanner sc = new Scanner(content)) {
        sc.useDelimiter("(;*\n*.+ .+ = )|;");
        List<Incredient> incredients = new ArrayList<>();
        while (true) {
            Incrediend incredient = new Incredient();
            if (sc.hasNext()) {
                String name = sc.next();
                incredient.setName(name);
                System.out.println("Name: " + name);
            } else {
                break;
            }
            if (sc.hasNextDouble()) {
                double unitPrice = sc.nextDouble();
                incredient.setUnit_price(unitPrice);
                System.out.println("Unit Price: " + unitPrice);
            } else {
                break;
            }
            if (sc.hasNextInt()) {
                int unit = sc.nextInt();
                incredient.setUnit(unit);
                System.out.println("Unit: " + unit);
            } else {
                break;
            }
            incredients.add(incredient);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

This works because of the delimiter I've used (;*\n*.+ .+ = )|;. This pice of regex just removes all the parts of the text file that you're not interested in saving.

There are a couple of problems with your approach, for example this:

i_one.setName(src.next());
System.out.println("Name: " +src.next());

Here, you're reading 2 tokens from the scanner because there are 2 calls to next(), if you want to use the same token for multiple things you should create a new variable to store it in (ex: String name = sc.next()).

The default delimiter that the Scanner is using is a single space and because of that, in your code, hasNextDouble() and hasNextInt() will never be true, all the numbers in the text file end with ;.

我不确定您要在这里做什么,从文本文件中解析Java代码有点不寻常。如果可以更改文本文件的格式,则应选择一种更易于解析的格式(例如CSV)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从应用程序目录文本文件中读取文本文件

来自分类Dev

如何在Windows窗体应用程序中访问文本文件

来自分类Dev

无法在Winform应用程序中修改文本文件值

来自分类Dev

解析文本文件中的值

来自分类Dev

如何仅浏览我的应用程序中的文本文件

来自分类Dev

如何仅浏览我的应用程序中的文本文件

来自分类Dev

如何从ios应用程序中的特定目录读取文本文件?

来自分类Dev

如何在PHP中解析常规文本文件

来自分类Dev

如何在C#中解析文本文件?

来自分类Dev

如何在Java中写入新的文本文件

来自分类Dev

如何在Java中屏蔽文本文件的内容

来自分类Dev

使用 SEND 意图处理 Android 应用程序中的共享文本文件和文本

来自分类Dev

如何在Java中读取文本文件并访问这些值

来自分类Dev

如何在Java中读取文本文件并访问这些值

来自分类Dev

从存储在应用程序中的文本文件中读取数据的最佳方法

来自分类Dev

文本文件中的追加数据在android应用程序中不起作用

来自分类Dev

如何在windows窗体应用程序中保存文本文件

来自分类Dev

如何在不覆盖当前数据的情况下将数据写入 C# 控制台应用程序中的文本文件

来自分类Dev

如何在 Spark 中编写一个独立的应用程序,以在填充了提取的推文的文本文件中找到 20 个大多数提及

来自分类Dev

如何以及在何处访问Android Adobe Air应用程序中的已保存文本文件

来自分类Dev

从文本文件中读取数据并使用SDI应用程序(MFC)显示数据?

来自分类Dev

字典应用程序、MVVM、WPF、从文本文件中读取

来自分类Dev

从Android中的文本文件解析单行值

来自分类Dev

如何在c#中解析文本文件中的特定行

来自分类Dev

如何在使用C#Windows应用程序创建文本文件时添加文本?

来自分类Dev

如何解析文本文件中的日期?

来自分类Dev

在Julia中解析文本文件

来自分类Dev

在PowerShell中解析文本文件

来自分类Dev

如何在python中从文本文件中添加和减去值

Related 相关文章

  1. 1

    如何从应用程序目录文本文件中读取文本文件

  2. 2

    如何在Windows窗体应用程序中访问文本文件

  3. 3

    无法在Winform应用程序中修改文本文件值

  4. 4

    解析文本文件中的值

  5. 5

    如何仅浏览我的应用程序中的文本文件

  6. 6

    如何仅浏览我的应用程序中的文本文件

  7. 7

    如何从ios应用程序中的特定目录读取文本文件?

  8. 8

    如何在PHP中解析常规文本文件

  9. 9

    如何在C#中解析文本文件?

  10. 10

    如何在Java中写入新的文本文件

  11. 11

    如何在Java中屏蔽文本文件的内容

  12. 12

    使用 SEND 意图处理 Android 应用程序中的共享文本文件和文本

  13. 13

    如何在Java中读取文本文件并访问这些值

  14. 14

    如何在Java中读取文本文件并访问这些值

  15. 15

    从存储在应用程序中的文本文件中读取数据的最佳方法

  16. 16

    文本文件中的追加数据在android应用程序中不起作用

  17. 17

    如何在windows窗体应用程序中保存文本文件

  18. 18

    如何在不覆盖当前数据的情况下将数据写入 C# 控制台应用程序中的文本文件

  19. 19

    如何在 Spark 中编写一个独立的应用程序,以在填充了提取的推文的文本文件中找到 20 个大多数提及

  20. 20

    如何以及在何处访问Android Adobe Air应用程序中的已保存文本文件

  21. 21

    从文本文件中读取数据并使用SDI应用程序(MFC)显示数据?

  22. 22

    字典应用程序、MVVM、WPF、从文本文件中读取

  23. 23

    从Android中的文本文件解析单行值

  24. 24

    如何在c#中解析文本文件中的特定行

  25. 25

    如何在使用C#Windows应用程序创建文本文件时添加文本?

  26. 26

    如何解析文本文件中的日期?

  27. 27

    在Julia中解析文本文件

  28. 28

    在PowerShell中解析文本文件

  29. 29

    如何在python中从文本文件中添加和减去值

热门标签

归档