我对编程有点新手。 :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);
}
再次感谢您的时间:)
答案 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文档以获取有关子字符串的信息。