2014-04-14 89 views
0

我是Android新手,但不是編程,我必須爲Masters項目創建原型應用程序。我有2個預定義數組,每個數組包含33個值。目標是讓按鈕單擊時顯示每個值的數組。最終它會做更多,但現在這不重要。Android:使用if語句循環數組

我已經使用了一個簡單的if/else if語句,並將其封裝在try/finally塊中。數組循環很漂亮,但是當我的值達到數組的末尾(32)並增加到最後(33)時,它不會繞過第一個if參數並轉到else if塊。試着盡我所能,我不能爲了我的生活找出爲什麼它不會在下一次迭代中返回錯誤並跳到下一部分。 logcat顯示它超出了數組的長度,這很好,但我有一個爭論的地方。或者我覺得我呢?

我可能錯過了一些明顯愚蠢的東西,但是如果有人能夠發現它,我會非常感謝幫助。由於事先:)

代碼:

public class TestActivity extends Activity { 

public int i; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    final TextView testQuest = (TextView) findViewById(R.id.questView); 
    final TextView testNum = (TextView) findViewById(R.id.numbs); 
    Button getNext = (Button) findViewById(R.id.btnNext); 

    final String[] quesNums = { "Question 1", "Question 2", "Question 3", 
      "Question 4", "Question 5", "Question 6", "Question 7", 
      "Question 8", "Question 9", "Question 10", "Question 11", 
      "Question 12", "Question 13", "Question 14", "Question 15", 
      "Question 16", "Question 17", "Question 18", "Question 19", 
      "Question 20", "Question 21", "Question 22", "Question 23", 
      "Question 24", "Question 25", "Question 26", "Question 27", 
      "Question 28", "Question 29", "Question 30", "Question 31", 
      "Question 32", "Question 33" }; 

    final String[] questions = { 
      "I have enough information about the organisation/work area to prepare for my placement.", 
      "I am clear about what I need to be able to do to be successful in this role.", 
      "I am clear about the skills and qualities I can offer this organisation/work area.", 
      "I have a realistic plan to manage financially.", 
      "I have a realistic plan to travel to and from the organisation/work area.", 
      "I have set realistic goals for myself to prepare for this experience.", 
      "I have realistic plan to manage my personal commitments.", 
      "My commitments to caring for others (E.g. children, parents) will not be affected by this placement.", 
      "Managing my personal needs (E.g. relating to my health, personal experiences, impairment or disability) so they do not have a negative effect on this placement", 
      "Overall, I am confident about my preparation for this experience.", 
      "Working on specific days/dates that are important to you e.g. Christmas Day, Eid, Diwali.", 
      "Being available for the working patterns of your placement.", 
      "Being flexible about your personal commitments or needs", 
      "Taking regular breaks during the day for your personal commitments or needs.", 
      "Feeling comfortable about discussing your personal commitments or needs with your supervisor on the placement.", 
      "Using negotiating skills with confidence on your placement.", 
      "Assessing the feasibility of asking for time off/alternative working arrangements on your placement. As opposed to during a permanent work contract.", 
      "Discussing any problems around managing this placement successfully with your academic supervisor.", 
      "Getting to your placement.", 
      "Getting to your placement on time.", 
      "Getting around the location.", 
      "Keeping up with the expected pace of work.", 
      "Keeping up with paperwork.", "Achieving your outcomes/goals.", 
      "Coping with deadlines.", "Coping with stress.", 
      "Coping with personal emergencies.", 
      "Working with others or in a team.", 
      "Working with people you don't know.", 
      "Working with people who are different from you.", 
      "Following instructions.", 
      "Using your initiative/ work independently.", 
      "Managing the hours and schedule of work." }; 

    i = 0; 

    getNext.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      try { 

       if (i <= quesNums.length) { 
        testNum.setText(quesNums[i]); 
        testQuest.setText(questions[i]); 
        i = i + 1; 
       } 
       else if (i > quesNums.length){ 
        testNum.setText("End of questions"); 
        testQuest.setText("All done"); 
        } 
      } finally { 
       if (i > 33){ 
       testNum.setText(i); 
       testQuest.setText(i); 
       } 
      } 
     } 

    }); 
} 

} 

logcat的:

04-14 03:05:33.250: E/AndroidRuntime(1567): java.lang.ArrayIndexOutOfBoundsException: length=33; index=33 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at hhs.huddersfield.ppa.TestActivity$1.onClick(TestActivity.java:76) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.view.View.performClick(View.java:4091) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.view.View$PerformClick.run(View.java:17036) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.os.Handler.handleCallback(Handler.java:615) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.os.Looper.loop(Looper.java:137) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at android.app.ActivityThread.main(ActivityThread.java:5031) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
04-14 03:05:33.250: E/AndroidRuntime(1567):  at dalvik.system.NativeStart.main(Native Method) 
04-14 03:05:35.450: E/Trace(1814): error opening trace file: No such file or directory (2) 

回答

0
if (i <= quesNums.length) { 
       testNum.setText(quesNums[i]); 
       testQuest.setText(questions[i]); 
       i = i + 1; 
      } 

TO

if (i < quesNums.length) { 
       testNum.setText(quesNums[i]); 
       testQuest.setText(questions[i]); 
       i = i + 1; 
      } 

指數quesNums [指數]應在範圍[ 0,長度-1]

+0

非常感謝!它現在完美地工作!不能相信我錯過了那些,但你讓我非常開心。謝謝你,謝謝你,謝謝你! – Cazzers