查找具有特定要求的字符串的索引?

时间:2016-07-14 17:01:26

标签: java substring processing indexof

我对编程有点新手。 :P

我现在正在使用Processing来创建一个包含ID,标题和可用性的主题表。

我有一个包含以下信息的2D数组:

units[0][0] = "CAKE100"; //Subject ID
units[1][0] = "Eating Cake And Baking Too"; //Subject Title
units[2][0] = "November"; //Subject Availability

units[0][1] = "TACO204"; //Subject ID
units[1][1] = "Tacos And Other Delicious Things"; //Subject Title
units[2][1] = "April"; //Subject Availability

units[0][2] = "KITC102"; //Subject ID
units[1][2] = "Kitchen Safety"; //Subject Title
units[2][2] = "June"; //Subject Availability

我试图过滤单位[0] [x]部分,找到每个主题ID的索引位置,其中包含" 1"在弦的第四个位置。

例如,我想返回[0] [0]和[0] [2],因为" CAKE100"和" KITC102"两者都有" 1"在第四位。

我尝试过使用indexOf或.substring,但出于某种原因,我无法弄明白。

编辑: 不知道会有多少帮助,但这是我的屠宰代码:

    void checkLevel100() {
for ( int j = 0; j < units.length; j++) {
    position = 0; 
   // position = units[0][j].indexOf("1"); //This returns 4;
    if (units[0][j].substring(4) == "1") { //This doesn't run at all, and so it returns 0.
      position = j;
    }
    fill(0);
    text(position, width/2, height/2);
  }
}

我也做了Kevin Workman的建议。这是代码:

for (int i = 0; i < units.length; i++) {
    if(units[0][i] == "TACO204"){ //This results in 1, as expected
      location[i] = i;
    println(i);
    }

再次感谢您的时间:)

2 个答案:

答案 0 :(得分:0)

您需要将问题分解为更小的步骤。

第1步:在您的2D数组上循环。您可以使用嵌套的for循环。

要测试此步骤是否有效,您可能只需打印二维数组中的每个元素,然后再担心任何逻辑。

第2步:编写if语句,检查该索引的值是否通过了测试。

要测试此步骤是否有效,您可能需要创建一个单独的程序,该程序仅测试硬编码值而不是使用数组。

步骤3:一旦完成前两个步骤,就可以将通过测试的索引保存到某种数据结构中。您可以为我们ArrayList<Integer>

创建一个单独的示例程序,它只是循环遍历数组而不必担心任何逻辑。创建另一个单独的程序,该程序仅使用if语句根据硬编码值测试您的条件。然后,如果您遇到特定步骤,可以发布更具体的问题以及MCVE。祝你好运。

答案 1 :(得分:0)

我认为将主题的值存储为class的对象会更简单。也许将ID的数字部分也存储为int?使用类可以编写更多人类可读的代码。

public class FoodSubject {
    String stringID;
    int numID;
    String title;
    String availability;

    public FoodSubject(String stringID, int numID,
                   String title, String availability) {

        this.stringID = stringID;
        this.numID = numID;
        this.title = title;
        this.availability = availability;
    }
}

要创建FoodSubject对象的新数组,请使用以下代码:

FoodSubject[] subjectArray = new FoodSubject[3];
subjectArray[0] = new FoodSubject("CAKE", 100, "Eating Cake And Baking Too", "November");

访问像subjectArray[0].numID

这样的值

查看覆盖类中的toString()方法,以便轻松打印出主题的所有值。这将有助于您更轻松地识别其余代码中的问题!

如果您仍想将整个ID存储为String,请使用charAt(int index)函数测试该字符是否为“1”。

if (units[0][j].substring(4) == "1") {代码不正确。查看String Java文档以获取有关子字符串的信息。