单步调试

单步调试

问题:

断点定位在User1_11,发现程序不能运行完整,最后一句显示不出来,就在UserTest1_11程序最后一行也打了一个断点,还是显示不出来。


但不用单步调试,直接运行Run As,就可以运行完全,这是为什么?


截图:

单步调试

https://img1.sycdn.imooc.com//climg/62aff4b108a787cc14400860.jpg

Run As

https://img1.sycdn.imooc.com//climg/62aff4f7085ce61a14400860.jpg


代码:

User1_11

public class User1_11 {
	// 定义属性用户名、密码
	private String name;
	private String pwd;

	public User1_11(String name, String pwd) {
		this.setName(name);
		this.setPwd(pwd);
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getPwd() {
		return this.pwd;
	}

	public void info() {
		System.out.println("用户名:" + this.name);
		System.out.println("密码:" + pwd);
	}
}

UserManage1_11

public class UserManage1_11 {
	// 用户信息验证的方法
	public void checkUser(User1_11 one, User1_11 two) {
		// 判断用户名和密码是否为空,是否一致
		if (one.getName().equals(two.getName()) && one.getPwd().equals(two.getPwd())) {
			System.out.println("用户名和密码一致");
		} else {
			System.out.println("用户名或密码不一致");
		}
	}
}

UserTest1_11

public class UserTest1_11 {
	// 测试方法
	public static void main(String[] args) {
		// 实例化对象,调用相关方法实现运行效果
		User1_11 one = new User1_11("Lucy", "123456");
		User1_11 two = new User1_11("Mike", "123456");
		one.info();
		two.info();
		System.out.println("===");
		UserManage1_11 um = new UserManage1_11();
		um.checkUser(one, two);
	}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-06-20 13:42:19

同学你好

1、未使用debug模式运行,程序会逐行执行,直到结束为止。故直接run as是可以正常运行输出结果。

2、使用debug模式运行,程序启动运行后会停在断点处,需要手动点击执行。

上述程序并未执行完成,故控制台输出不完整。如下:
https://img1.sycdn.imooc.com//climg/62b006e7097506d403830182.jpg

程序中存在四处断点,程序运行到断点出会暂停执行。可手动点击F6继续执行。

https://img1.sycdn.imooc.com//climg/62b008650920260911010381.jpg

祝学习愉快~

  • 提问者 EllaAzure #1

    问题是,当程序运行到UserTest的最后一行um.checkUser(one,two);,就停止了,不管按键盘上的F6,还是编辑器上的step into 或者step over键,都是无效的。


    最后一行的输出结果“用户名或密码不一致“,也是显示不出来的,为什么?

    2022-06-21 12:22:36
  • 好帮手慕小小 回复 提问者 EllaAzure #2

    同学你好,um.checkUser(one,two);上存在断点,故程序运行到此处会暂停执行,需点击step over才会继续执行。又因check方法体内仍存在断点,故会继续停止至此方法体内断点位置处,需继续点击step over继续向后执行。

    同学多点击几次step over即可。

    https://img1.sycdn.imooc.com//climg/62b1593c095c56ab01430055.jpg

    https://img1.sycdn.imooc.com//climg/62b15a77093b403406870328.jpg

    祝学习愉快~

    2022-06-21 13:47:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师