首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的Java Buffered Reader

循环中的Java Buffered Reader
EN

Stack Overflow用户
提问于 2016-05-12 04:40:35
回答 1查看 170关注 0票数 0

我正在尝试创建一个JAVA程序,该程序从txt文件中读取一些标记,并创建将这些标记作为字段的对象。我正在发布我有问题的代码的一部分:

代码语言:javascript
复制
try{
        line = reader.readLine();
        while(line != null){
            if (!line.trim().equals(" ") && line.trim().equals("ITEM_LIST")) {
                    line = reader.readLine();
                    if (line != null && line.trim().equals("{"))) {
                            line = reader.readLine();
                            if (line != null) {
                                if (line.trim().equals("ITEM")) {
                                    line = reader.readLine();
                                    if (line != null) {
                                        if (line.trim().equals("{")) {
                                            if (line != null) {
                                                line = reader.readLine();
                                                while (!((line.trim().startsWith("ITEM_TYPE ")) {
                                                    line = reader.readLine();
                                                    if((line.trim().startsWith("ITEM_TYPE ")){
                                                        String devType = line.trim().substring(10);
                                                    }
                                                )
                                                if(devType.toLowerCase() == "tv"){
                                                    dev = new TV();
                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("CODE ")) {
                                                            dev.setCode(line.substring(5).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("MODEL ")) {
                                                            dev.setModelName(line.substring(6).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("MODEL_YEAR ")) {
                                                            dev.setYear(line.substring(11).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("MANUFACTURER ")) {
                                                            dev.setConstructor(line.substring(13).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("PRICE ")) {
                                                            dev.setPrice(Double.parseDouble(line.substring(6).trim()));
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("PANEL_TYPE ")) {
                                                            dev.setType(line.substring(11).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("DIMENSIONS ")) {
                                                            dev.setSize(line.substring(11).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("RESOLUTION ")) {
                                                            dev.setResolution(line.substring(10).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("INTERFACES ")) {
                                                            dev.setPorts(line.substring(10).trim());
                                                        }
                                                    }

                                                    line = reader.readLine();
                                                    if (line != null){
                                                        if (line.trim().toUpperCase().startsWith("PIECES ")) {
                                                            dev.setPieces(line.substring(7).trim());
                                                        }
                                                    }

我的问题是,我如何修改代码,以便首先读取标签ITEM_TYPE,然后创建特定的项目(例如电视),然后读取所有其他标签并完成对象。txt文件中标记的顺序不是特定的,如果缺少标记,则该字段将采用默认值。下面是txt文件:

代码语言:javascript
复制
  ITEM_LIST
{
ITEM
{
    CODE ADLS443
    ITEM_TYPE tv
    MODEL IDL32KJX4300
    MODEL_YEAR 2016
    MANUFACTURER Samsung
    PRICE 350
    PANEL_TYPE LCD
    DIMENSIONS 32
    RESOLUTION "Full HD"
    INTERFACES "HDMI USB SCART"
    PIECES 43
}
ITEM
{
    CODE KD444211
    ITEM_TYPE tv
    MODEL KDL49DDR4600
    MODEL_YEAR 2014
    MANUFACTURER Sony
    PRICE 600
    PANEL_TYPE LED
    DIMENSIONS 49
    RESOLUTION "Ultra HD"
    INTERFACES "HDMI USB SCART Ethernet WiFi"
    PIECES 8
}
ITEM
{
    CODE 2445DBS41
    ITEM_TYPE blueray
    MODEL JVX44R32
    MODEL_YEAR 2012
    MANUFACTURER LG
    PRICE 250
    RESOLUTION 1080p
    FORMAT BR-W
    PIECES 12
}

如果有任何关于代码的信息丢失,我很抱歉。

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 04:45:53

简而言之,你不能。

更好的答案-读取ITEM下的所有内容,提取ITEM_TYPE,创建您想要的对象,并用其余数据填充它。

此外,您可能只想在执行reader.readLine()之后执行一次line.trim(),并且通常将代码重写为状态机,这样您就不会有那么高级别的嵌套if

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37172866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档