2016-07-14 4 views
0

私はプログラミングの初心者です。 :P特定の要件を持つ文字列のインデックスを検索しますか?

私はIDとタイトルとアベイラビリティを持つサブジェクトのテーブルを作成するために今すぐ処理しています。

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 

I [0] [X]セクション」を有するすべてのサブジェクトIDのインデックスの場所を見つけるためにユニットを通して濾過しようとしている:

私はこのような情報が含まれている2次元アレイを有します文字列の4番目の位置に「1」を挿入します。

たとえば、「CAKE100」と「KITC102」の両方が4番目の位置に「1」を持っているため、[0] [0]と[0] [2]を返したいとします。

私はindexOfまたは.substringを使用しようとしましたが、何らかの理由でそれを理解できません。

EDIT: それがどのくらい助けてくださいが、ここに私の虐殺のコードだない:

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: 2D配列をループします。これにはネストされたforループを使用することができます。

この手順がうまくいくかどうかをテストするには、ロジックについて心配する前に、2次元配列のすべての要素を印刷するだけです。

手順2:ifを入力して、そのインデックスの値がテストに合格しているかどうかを確認します。

この手順をテストするには、配列を使用する代わりに、ハードコードされた値をテストするだけの別のプログラムを作成することが必要な場合があります。

ステップ3:最初の2つのステップが完了したら、テストに合格したインデックスを何らかの種類のデータ構造に保存できます。このためにはArrayList<Integer>とお考えください。

ロジックを気にせずにアレイをループするだけの別のサンプルプログラムを作成します。 ifステートメントを使用して、ハードコードされた値に対して条件をテストする別のプログラムを作成します。具体的なステップを踏まえた場合は、具体的な質問をMCVEと一緒に投稿することができます。がんばろう。

0

classのオブジェクトとして被写体の値を保存する方が簡単だと思います。 IDの数値部分をintとして格納しているかもしれませんか?クラスを使用すると、人間が読めるコードを書くことができます。このsubjectArray[0].numID

のような値が印刷にあなたのクラスのtoString()メソッドをオーバーライドに見て

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

アクセス:あなたのFoodSubjectオブジェクトの新しい配列を作るために

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; 
    } 
} 

は、このコードを使用しますあなたの被験者のすべての値を簡単に出してください。これにより、残りのコードの問題をより簡単に特定するのに役立ちます。

ID全体を文字列として保存したい場合は、charAt(int index)関数を使用して、文字が '1'かどうかをテストします。

if (units[0][j].substring(4) == "1") {コードが間違っています。部分文字列が何をするかについては、String Javaのドキュメントを参照してください。

関連する問題