2016-07-14 86 views
0

我是一個編程新手。 :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); 
    } 
} 

我也做了凱文·沃克曼建議。下面是該代碼:

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

請發佈您嘗試的代碼,以便修復它。 – VatsalSura

+0

添加您的代碼請 –

+0

@VatsalSura 對不起,現在發佈。 :) – MiekeUyt

回答

0

您需要向下打破你的問題分成更小的步驟。

第1步:循環播放您的二維數組。你可以使用嵌套的for循環。

爲了測試此步驟的工作原理,您可以在擔心任何邏輯之前打印2d數組中的每個元素。

第2步:編寫一個if語句,檢查該索引處的值是否通過了您的測試。

要測試這一步的工作原理,您可能需要創建一個單獨的程序,它只是測試硬編碼值而不是使用數組。

第3步:一旦你有前兩步工作,那麼你可以保存通過你的測試的索引到某種數據結構。你可以爲我們一個ArrayList<Integer>這個。

創建一個單獨的示例程序,該程序只是在數組上循環而不用擔心任何邏輯。創建另一個單獨的程序,僅使用if語句來針對硬編碼值測試您的條件。然後,如果您遇到特定步驟,可以發佈更具體的問題以及MCVE。祝你好運。

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存儲爲字符串,請使用charAt(int index)函數來測試該字符是否爲'1'。

This if (units[0][j].substring(4) == "1") {代碼不正確。查看String Java文檔以獲取有關子字符串的信息。

相關問題