-2

Androidで簡単なクイズアプリを作りたいのですが、問題が表示されません。文字列の配列を使用して質問を保持し、配列で表示しようとします。これが私のコードです

ここに私のエラーログがあります

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hikaru.sistempakar, PID: 2626 java.lang.ArrayIndexOutOfBoundsException: length=7; index=7 at com.example.hikaru.sistempakar.MainActivity$1.onClick(MainActivity.java:46)

public class MainActivity extends AppCompatActivity {
TextView tv;
Button btn;
RadioGroup rg;
RadioButton rb1,rb2;
String questions[]={"Kulit Memerah?","Kulit Gatal?","Kulit Bersisik?","Kulit Menggumpal?","Kulit Melemouble?","Kulit Menebal?","Iritasi Kulit?"};
String opt[]={"Ya","Tidak"};
String ans[]={};

int flag=0;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv=(TextView)findViewById(R.id.textView);
    rb1=(RadioButton)findViewById(R.id.radioButton1);
    rb2=(RadioButton)findViewById(R.id.radioButton2);
    btn=(Button)findViewById(R.id.button);
    rg=(RadioGroup)findViewById(R.id.radioGroup1);

    tv.setText(questions[flag]);
    rb1.setText(opt[0]);
    rb2.setText(opt[1]);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // RadioButton uans=(RadioButton)findViewById(rg.getCheckedRadioButtonId());
            //String ansText=uans.getText().toString();

            for(flag=0;flag<=questions.length;flag++)
            {
                tv.setText(questions[flag]);
                rb1.setText(opt[0]);
                rb2.setText(opt[1]);

            }
            //Intent in = new Intent(getApplicationContext(),ResultActivity.class);
            //startActivity(in);

        }
    });
}

}

4

2 に答える 2

0

フラグ値が 7 に達すると、true を返す条件をチェックしflag<=questions.lengthますが、実際には配列に 7 番目の項目がありません。これがエラーの理由です。

コードを次のように変更します。

for(flag=0;flag<questions.length;flag++)
            {
                tv.setText(questions[flag]);
                rb1.setText(opt[0]);
                rb2.setText(opt[1]);

            }

また

for(flag=1;flag<=questions.length;flag++)
            {
                tv.setText(questions[flag]);
                rb1.setText(opt[0]);
                rb2.setText(opt[1]);

            }
于 2015-11-25T13:09:07.267 に答える