2016-11-07 125 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