是否可以在Java中为两个字符串数组使用一个for循环?

时间:2016-03-23 13:46:15

标签: java android arrays string language-lawyer

是否可以在for循环中包含String“arrayNames”,如下所示:for (String s:arrayLocations +String otherOne:arrayNames)?我知道这段代码是错误的,但这只是为了解决这个问题。

String[] arrayLocations = formattedLocations.split(",");
String[] arrayNames = formattedNames.split(",");

for(String s:arrayLocations)
{
   Toast.makeText(context, s, Toast.LENGTH_LONG).show();
   Toast.makeText(context, toBeAdded, Toast.LENGTH_LONG).show();
}

4 个答案:

答案 0 :(得分:3)

不可能,除非您创建一个由两个输入的并集组成的新数组。但是你基本上有三个循环。

(从语法上讲,我不明白为什么for (String s: arrayLocations, arrayNames)形式的语法无法被采用到语言中。)

解决此问题的一种方法是使用函数

private foo(String[] ss)
{
    for(String s:ss)
    {
       Toast.makeText(context, s, Toast.LENGTH_LONG).show();
    }
}

并调用两次,传递arrayLocations,然后传递arrayNames。可以说这更具有可扩展性:假设您拥有它,foo甚至可能成为Toast类的成员函数。

答案 1 :(得分:3)

假设数组的长度相同,

String[] arrayLocations = formattedLocations.split(",");
String[] arrayNames = formattedNames.split(",");


for(int i = 0; i < arrayLocations.length; i++ )
{
   Toast.makeText(context, arrayLocations[i], Toast.LENGTH_LONG).show();
   Toast.makeText(context, arrayNames[i], Toast.LENGTH_LONG).show();
}

答案 2 :(得分:2)

请勿使用foreach进行迭代,而是执行for i ...(如果两个数组的大小相同...)

实施例

for (int i = 0; i < arrayLocations.length; i++) {
    Toast.makeText(context, arrayLocations[i], Toast.LENGTH_LONG).show();
    Toast.makeText(context, arrayNames [i], Toast.LENGTH_LONG).show();
}

答案 3 :(得分:0)

你的意思是,你想要处理arrayLocations的第0个元素以及arrayNames的第0个元素,依此类推?现代的for循环不可能,但与传统的循环相当标准。

if (arrayLocations.length == arrayNames.length) {
    for (int i = 0; i < arrayLocations.length; i++) {
        Toast.makeText(context, arrayLocations[i], Toast.LENGTH_LONG).show();
        Toast.makeText(context, arrayNames[i], Toast.LENGTH_LONG).show();
    }
}