Java - 用于循环遍历字符串数组

时间:2016-11-07 20:43:54

标签: android arrays string for-loop

所以我是编程新手。我有一个名为values的字符串数组,其中包含大约150个字符串。我不想使用大量的if语句,而是使用for循环,每次循环循环增量到数组中的下一个元素。我确定这是一个非常简单的修复,但我无法解决它。谢谢你的建议!

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);

                    }
*/
                }

2 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:0)

在循环内部,用&#34; i&#34;替换硬编码的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);
 }
}

此外,最后不需要为值添加计数器,因为它由for循环中的i ++处理。希望有所帮助!