0

以下のコードがぎこちないように見えて申し訳ありません。要約すると、ユーザーが問題の 4 種類の難易度を選択できるクイズ ゲームを作成しています。たとえば、ユーザーがチェックボックス 1 と 3 を選択した場合、以下のコードは、string.xml の文字列配列を String[] NUM_ALL_QuestionNames に格納することを目的としています。

//same for checkbox1,2,3, so here not duplicate //

      if (checkbox4=="yes") 
      {
          NUM_EXP_QuestionNames = getResources().getStringArray(R.array.Num_Q_Expert_List);                                               
          NUM_EXP_AnswerNames = getResources().getStringArray(R.array.Num_A_Expert_List);

          QuestionImport= 0;                  
          QuestionImport = NUM_EXP_QuestionNames.length;
          int i =0;
          while (i<QuestionImport)
          {
              String Q_toimport = NUM_EXP_QuestionNames[i];
              String A_toimport = NUM_EXP_AnswerNames[i];   

              NUM_ALL_QuestionNames.add(Q_toimport);
              NUM_ALL_AnswerNames.add(A_toimport);                    
              ++i;                    
          }           
      };


      NUM_ALLL_QuestionNames = new String[NUM_ALL_QuestionNames.size()]; //convert ArrayList<String> to String[]
      NUM_ALLL_AnswerNames = new String[NUM_ALL_AnswerNames.size()]; //convert ArrayList<String> to String[]

最後に、NUM_ALL_Questionnames は、さらに処理するために ArrayList NUM_ALLL_QuestionNames から String[] に変換されます。

次のように設定しようとすると (string.xml から直接抽出)、アプリが正常に動作するため、string.xml 内のファイルに問題はありません。

NUM_ALLL_QuestionNames = getResources().getStringArray(R.array.Num_Q_Simple_List);
NUM_ALLL_AnswerNames = getResources().getStringArray(R.array.Num_A_Simple_List);

質問:

  1. これは String[] 形式の string.xml からのデータであり、List に追加され、この List は最終的に String[] に変換されます。この変換が必要ないような変更はありますか。string.xml が String[] に直接できるとよい

  2. アプリの実行を続けると、logcat はエラーを表示しません。ただし、エミュレーターは黒い画面を保持します。なぜそれが起こるのですか?コードの無限ループはありますか?

どうもありがとう!

4

2 に答える 2

2

これは間違っています:

NUM_ALLL_QuestionNames = new String[NUM_ALL_QuestionNames.size()]; //convert ArrayList<String> to String[]

ArrayListをString[]に変換するのではなく、変数の値を空のString[]に設定します。変換するには、次のようにします。

NUM_ALLL_QuestionNames = NUM_ALL_QuestionNames.toArray();

NUM_ALL_QuestionNamesそれがリストであると仮定します。

そして、Doctorは正しいです、その文字列の比較はJavaでは機能しません。

于 2012-11-20T17:24:48.003 に答える
0

チェックボックス 4 の値が文字列である理由はわかりませんが、== を介して文字列を比較しないでください。この方法では、異なるオブジェクトを指している可能性のあるリンクを比較するためです。代わりに、次のように String の equals メソッドを使用します if (checkbox4.equals("yes"))

于 2012-11-20T17:23:26.397 に答える