【问题标题】:Processing an array of data with a pattern in it in Java?在Java中处理带有模式的数据数组?
【发布时间】:2012-04-09 12:29:33
【问题描述】:

所以我得到了这个带有书籍信息的字符串:

String data = "Harry Potter 1 | J.K. Rowling| 350 | Fantasy | Hunger Games | Suzanne Collins | 500 | Fantasy | The KingKiller Chronicles | Patrick Rothfuss | 400 | Heroic Fantasy" 

然后我拆分字符串:

String splitData = data.split("\\|"); 

这将导致哈利波特 1 处于位置 0,J.K.罗琳排在第1位,350排在第2位,以此类推。

您可能会在此处看到一个模式,即位置 0 是书名,位置 1 是作者,位置 2 是页数,位置 3 是类型。然后它再次从位置 4 开始,这又是一本书的标题,位置 5 是书的作者,等等。我假设你明白我要去哪里。

现在假设我想分别显示所有这些元素,例如分开打印所有标题、所有作者、所有页数等。我将如何完成此操作?

这应该是可以做到的,因为标题在 0、4、8 中。作者在 1、5、9 等中。

【问题讨论】:

  • 不,如果您查看我之前的问题,我正在尝试制作漫画阅读器。这得到了漫画的标题,作者等。我正在尝试处理这个,但我不知道如何^^。
  • 先自己试试,有问题再问。
  • 你试过什么?你已经弄清楚了数组索引和“类型”之间的关系,你有你需要的一切。
  • 你已经把模式写下来了,(标题在 0、4、8 等)你已经完成了!
  • 是的,今天只是糟糕的一天,但我已经得到了我需要的答案。

标签: java arrays split


【解决方案1】:
String data = "Harry Potter 1 | J.K. Rowling| 350 | Fantasy | Hunger Games | Suzanne Collins | 500 | Fantasy | The KingKiller Chronicles | Patrick Rothfuss | 400 | Heroic Fantasy"; 
    String[] splitData = data.split("\\|");
    for(int i=0; i<splitData.length;i++) {
        if(i % 4 == 0) System.out.println("Title: "+splitData[i]);
        else if(i % 4 == 1) System.out.println("Author: "+splitData[i]);
        else if(i % 4 == 2) System.out.println("Pages: "+splitData[i]);
        else if(i % 4 == 3) System.out.println("Genre: "+splitData[i]);
    }

很难,不是吗?

【讨论】:

  • 我向[你所信仰的精神领袖的名字]发誓,我早就知道这一点,但我今天有很多麻烦的想法,所以我的思想被堵塞了。不过谢谢!顺便说一句,这些 if 语句中的 3 个应该是 else-if 语句......这使得程序稍微更有效率。
  • 你也可以使用 switch:i % 4 只会计算一次
【解决方案2】:

您可以回想for 循环允许您在最后一个表达式中执行任何 修改,而不仅仅是i++。对于这种情况,您可以使用i += 4。然后在每次迭代中,名称将在splitData[i],作者在splitData[i+1],页数在splitData[i+2],流派在splitData[i+3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2023-02-08
    • 1970-01-01
    • 2015-08-23
    • 2011-04-11
    • 2010-11-25
    • 1970-01-01
    相关资源
    最近更新 更多