2016-11-07 116 views
0

所以我是編程新手。我有一個名爲值的字符串數組,其中有大約150個字符串。而不是使用大量的if語句,我不想​​使用for循環,每次循環通過循環遞增到數組中的下一個元素。我相信這是一個超級簡單的修復,但我無法解決它。感謝您的任何建議!Java - 通過字符串數組進行循環循環

routeListView.setOnItemClickListener(
      new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view,  int position, long id) { 

        String route = values[position]; 

        int i; 
        for (i=0; i < values.length;i++) { 

         if (route.equals(values[0])) { 

          Intent intent = new Intent(view.getContext(), RouteDetails.class); 
          intent.putExtra("route", routeDetail[0]); 
          startActivity(intent); 
         } 
        values++; 
        } 
        /*if (route.equals(values[0])) { 

         Intent intent = new Intent(view.getContext(), RouteDetails.class); 
         intent.putExtra("route", routeDetail[1]); 
         startActivity(intent); 

        } 
        if (route.equals("Main Wall")) { 

         Intent intent = new Intent(view.getContext(), RouteDetails.class); 
         intent.putExtra("route", "Map of Main Wall"); 
         startActivity(intent); 

        } 
        if (route.equals("1. Shark Bait - 5.9")) { 

         Intent intent = new Intent(MainActivity.this,  RouteDetails.class); 
         intent.putExtra("route", "Shark Bait"); 
         startActivity(intent); 

        } 
*/ 
       } 
+0

此代碼是否可編譯? 'values'是一個'String []',它怎麼能用'++ ++'來增加? –

回答

0

在循環內部,將硬編碼的0替換爲「i」。這將允許您的代碼在循環的每個迭代中運行。例如,我將與0,則1,則2被替換等

for (int i=0; i<values.length; i++) { 

if (route.equals(values[i])) { 

    Intent intent = new Intent(view.getContext(), RouteDetails.class); 
    intent.putExtra("route", routeDetail[i]); 
    startActivity(intent); 
} 
} 

此外,也沒有必要在末尾添加一個計數器的值,因爲它是由第i ++在處理for循環。希望有所幫助!

+0

感謝ky你它完美的作品! – user4297729

0

看起來像你可以使用開關...如果你需要int和字符串比較你可以使用兩個開關來做到這一點。

String route = values[position]; 

    switch(position) { 
     case 0: 
      Intent intent = new Intent(MainActivity.this, RouteDetails.class); 
      intent.putExtra("route", routeDetail[0]); 
      startActivity(intent); 
      return; 
     case 1: 
      // Do stuff 
      return; 
    } 

    switch(route) { 
     case "Main Wall": 
      Intent intent = new Intent(MainActivity.this, RouteDetails.class); 
      intent.putExtra("route", "Map of Main Wall"); 
      startActivity(intent); 
      return; 

     case "Shark Bait": 
      Intent intent = new Intent(MainActivity.this, RouteDetails.class); 
      intent.putExtra("route", "Shark Bait"); 
      startActivity(intent); 
      return; 
    } 
+0

謝謝。所以沒有辦法不必使用像150條語句或開關? – user4297729