Java中if与while怎么区别,为什么输出时结果会不一样呢?

时间:2023-01-19 21:14:06

class MyList
{    
     class Node{int data; Node next;}
     private Node head;

     public Node getTail( )
     {
      Node t=head;
      if(head==null) return null;
      while(t.next!=null)t=t.next;                           //while 不可换为if ,这里替换的话输出时不正确
       return t;
      }


     public void add(int x)
     {
      Node m=new Node();
      m.data=x;
      Node tail=getTail();
      if(tail==null) head=m;
      else   tail.next=m;
     }


     public void show()
     {
      Node t=head;
      while(t!=null)                                  //while 不可换为if ,这里替换的话输出时不正确
       {System.out.println(t.data);
        t=t.next;}
     }
}

public class A21
{
public static void main(String[] args)
{
MyList a = new MyList();
a.add(3);
a.add(5);
a.add(20);
a.add(18);
a.add(9);
a.show();
}
}

3 个解决方案

#1


while和if本身就用法不同,一个是循环语句,一个是判断语句。

#2


 while(t!=null) {                                //while 不可换为if ,这里替换的话输出时不正确
    System.out.println(t.data);
    t=t.next;}
 }

if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来

链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了 

#3


if 和 while当条件不成立时,都跳过代码块执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。

#1


while和if本身就用法不同,一个是循环语句,一个是判断语句。

#2


 while(t!=null) {                                //while 不可换为if ,这里替换的话输出时不正确
    System.out.println(t.data);
    t=t.next;}
 }

if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来

链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了 

#3


if 和 while当条件不成立时,都跳过代码块执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。