-1

我有一个代码片段,它是

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

4 回答 4

6

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

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

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

于 2013-08-21T08:50:01.993 回答
1

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

编码

if (condition);
{
  doSomething();
}

是相同的

if (condition) 
{
  // nop
}
{
  doSomething();
}
于 2013-08-21T08:50:57.420 回答
1

我找不到任何奇迹。if(mylist.get(i).equals(sr1));第二个如果没有正文结束。所以 if statement() 旁边的语句{...}每次都会被执行,但是当你使用break它时,它会执行一次并跳出循环。

if(mylist.get(i).equals(sr1));  // semi-colon makes the wounder :)
于 2013-08-21T08:51:01.887 回答
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;
        }
    }
}

}

于 2013-08-21T08:53:14.867 回答