8

我正在使用 for each 循环来访问字符串数组的每个元素并检查这些字符串的特定特征。如果当前元素已显示所需的字符,我需要访问此循环中的下一个元素。所以当前的开启对我来说只是一个指标,下一个是我需要掌握和处理的。有没有办法存储当前的并处理正确的下一个?

谢谢

4

7 回答 7

20

您要么需要使用索引循环。

for(int i=0;i<strings.length-1;i++) {
    String curr = strings[i];
    String next = strings[i+1];
}

或者您需要将当前与上一个进行比较,而不是下一个。

String curr = null;
for(String next: strings) {
    if (curr != null) {
        // compare
    }
    curr = next;
}
于 2013-09-18T12:24:36.157 回答
3

你可以试试这样的

    String valBefore=new String();
    boolean flag=false;
    for (String i:str){
         if(i.equals("valueBeforeTheExpectedValue")){
             valBefore=i;
             flag=true;
             continue;
         } if (flag){
             // Now you are getting expected value
             // while valBefore has previous value 
             flag=false;
        }
    }
于 2013-09-18T12:27:09.217 回答
2

你可以这样尝试:

String myArray[]= { "this","is","the","value"};
......
int counter=0;
for(String x:myArray){
  counter++;
  if(x.equals("value")){
    System.out.println(counter);
  }
}

这将循环数组,如果满足条件,将打印相应的消息。在这种情况下,它将打印4

于 2013-09-18T12:24:42.017 回答
1

您可以使用continue;跳过当前迭代并继续下一个迭代。将值保存在变量中以使用它。

于 2013-09-18T12:23:43.207 回答
1

您需要将 if 从 for-each-loop 更改为常规 for-loop。

String[] strings = new String[]{"aaa","bbb","ccc"};

for (int i = 0; i < strings.length; i++) {
    if (strings[i].equals("aaa")) {
        i++;
        String anotherValue = strings[i];
    }
}
于 2013-09-18T12:26:18.847 回答
1

不优雅,但可能适用于某些事情。向列表中添加额外元素:

    List<String> stringsOnList= new ArrayList<String>(Arrays.asList(new String[]{ "1" , "2", "3" }));
    String currentString = null;
    stringsOnList.add(""); // add extra element for the extra loop
    for(String nextString : stringsOnList){
        if(currentString==null){
            currentString=nextString;
            continue;
        }
        //Do stuff e.g.: {
        System.out.println("Current:"+currentString+", next: "+nextString);
        // } 

        currentString=nextString; // current is next
    }

输出:

Current:1, next: 2
Current:2, next: 3
Current:3, next: 
于 2017-06-14T12:56:31.787 回答
0

根据您的需要,我在这里制作了一个示例代码...

public class One {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String stringArray[]={"Dinakar","DinaNath"};
        for(String singleString:stringArray)
        {
            if(singleString.charAt(0)=='D')
            {
                // process with singleString here
                System.out.print("Got it ");//my work done
                break;
            }       
        }
    }
}

如果有任何问题再次与我联系,请玩得开心。

于 2013-09-18T12:34:20.697 回答