我的这个代码没有错误,但是没有显示任何输出

时间:2019-03-30 07:18:15

标签: java

在这段代码中,setEid方法不起作用,不知道while循环有什么问题

我的这段代码没有错误,但是没有显示任何输出

public class Emp {

    private String eid;

    public String getEid() {

        return eid;
    }

    public void setEid(String e) {
        while (e.length() < 12) {
            eid = e;
        }
    }
}

public class Test {

    public static void main(String[] args) {
        Emp z = new Emp();
        z.setEid("rgrge");
        System.out.println("\n" + z.getEid());
    }
}            

在此处输入代码,我希望setEid参数的静态初始化不应超过12个字符

2 个答案:

答案 0 :(得分:2)

您的setter方法有一个while循环,如果eid长度小于12,则它总是卡在此方法中。

public void setEid(String e){
     while(e.length()<12)
        eid=e;
 }

以及您的主要方法

 public static void main(String[] args) {
      Emp z=new Emp();
      z.setEid("rgrge"); // you call setter 
      System.out.println("\n"+z.getEid());
}

您在setter中传递了"rgrge",并且其长度小于12。这就是为什么您的程序陷入循环并且没有显示任何内容的原因。

将setter实现更改为此。

public void setEid(String e){
   if(e.length()<12) // change while to if
        eid=e;
}

答案 1 :(得分:0)

所以首先应该有if而不是while

  

更改:

while(e.length()<12)更改为if(e.length()<12)

  

说明:

您的setEid方法永远不会运行,因为那里没有中断条件。您的while loop条件趋于无限。您的代码陷入了while循环。

您在此处通过了z.setEid("rgrge");。在您的示例中,string e的长度为5,显然小于12,因此条件将始终得到满足,并且程序将陷入无限循环。