来自代码片段的意外输出 - Java

时间:2013-08-21 08:44:59

标签: java list arraylist

我有一个代码段,它是

List<String> mylist = new ArrayList<String>();
mylist.add("ren");
mylist.add("rahul->RC");
mylist.add("arun");
String sr = "rahul->RC";
String sr1 = "rahul";

for ( int i=0;i<mylist.size();i++ )
{
    if(mylist.get(i).contains(sr))
    {
        System.out.println(mylist.get(i)+" CONTAINS "+sr);
        mylist.remove(mylist.get(i));
        System.out.println("Inside : "+mylist);
        mylist.add("again"); 
        break;
    }
    if(mylist.get(i).equals(sr1));
    {
        System.out.println(sr1 +" EQUELS " +mylist.get(i)); 
        mylist.remove(mylist.get(i));
        mylist.add(sr);
        break;
    }
}

System.out.println("Final Output => "+mylist);

当我运行此代码时,我得到了输出

rahul EQUELS ren
Final Output => [rahul->RC, arun, rahul->RC]

我想知道我什么时候看到这个输出。 rahul EQUELS ren怎么会发生这种情况? 我无法弄清楚问题?请帮我解决这个问题。

4 个答案:

答案 0 :(得分:6)

你的第二个if语句后面有一个分号:

if(mylist.get(i).equals(sr1));  // Remove the semi-colon

分号标记if语句的结尾,而后面的块只是一个本地块,它将始终被执行。

答案 1 :(得分:1)

这是经典的:if(mylist.get(i).equals(sr1));之后删除分号 分号终止if语句(无块),然后以下代码块与条件无关(您可以在代码中的任何位置使用块)。

代码

if (condition);
{
  doSomething();
}

相同
if (condition) 
{
  // nop
}
{
  doSomething();
}

答案 2 :(得分:1)

我找不到任何奇迹。if(mylist.get(i).equals(sr1));秒如果没有身体就结束了。所以在if语句({...})旁边每次都会执行,但是当你使用break时,它会执行一次而不会循环。

if(mylist.get(i).equals(sr1));  // semi-colon makes the wounder :)

答案 3 :(得分:1)

删除分号。执行以下代码。由于半冒号,语句之后的语句将始终执行,并且将打印EQUELS。

import java.util.ArrayList;
import java.util.List;


public class HelloWorld {

public static void main(String[] args) {
    List<String> mylist = new ArrayList<String>();
    mylist.add("ren");
    mylist.add("rahul->RC");
    mylist.add("arun");
    String sr = "rahul->RC";
    String sr1 = "rahul";

    for ( int i=0;i<mylist.size();i++ )
    {


        if(mylist.get(i).contains(sr))
        {
            System.out.println(mylist.get(i)+" CONTAINS "+sr);
            mylist.remove(mylist.get(i));
            System.out.println("Inside : "+mylist);
            mylist.add("veendum"); 
            break;
        }
        if(mylist.get(i).equals(sr1))
        {
            System.out.println(sr1 +" EQUELS " +mylist.get(i))
            mylist.remove(mylist.get(i));
            mylist.add(sr);
            break;
        }
    }
}

}