在这段代码中,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个字符
答案 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,因此条件将始终得到满足,并且程序将陷入无限循环。