1 回答
TA贡献1860条经验 获得超8个赞
您需要{ ... }在语句中的块周围使用大括号if:
for (int i=0; i<2;) {
if (!pass.equals (password))
i++;
System.out.println("Try again! ");
String pass1 = sc.next();
if(pass.equals( password))
System.out.println("Welcome");
String pass2 = sc.next();
if (i == 2)
System.out.println("Sorry, your account is suspened");
}
实际上的意思是这样的:
for (int i = 0; i < 2; ) {
if (!pass.equals(password)) {
i++;
}
System.out.println("Try again! ");
String pass1 = sc.next();
if (pass.equals(password)) {
System.out.println("Welcome");
}
String pass2 = sc.next();
if (i == 2) {
System.out.println("Sorry, your account is suspened");
}
}
一旦我们正确缩进了代码并在编译器期望的位置添加了大括号,我们就可以开始看到一些问题。
例如:
当密码正确时,不会增加任何内容
i
。这意味着这i < 2
不会是真的,并且循环将继续循环下去。您为每个循环迭代调用
next()
两次。
等等。
现在我可以为你重写你的代码1。但你不会从中学到很多东西。(您可以通过自己编写代码、犯错误、发现并纠正它们……自己来学得最好!)
相反,我会推荐您阅读有关“橡皮鸭”调试技术的内容。这听起来像是一个笑话,但事实并非如此。这是一项以幽默的方式解释的重要技术。这就是我在 18 岁学习编程时所学到的一种调试程序的方法2。
橡皮鸭调试背后的想法是帮助您了解计算机如何“思考”。一旦你能做到这一点,编程就会变得容易得多。这就是为什么我强烈建议您自己做这件事!
不管怎样,一旦你能想象出代码哪里出了问题,下一步就是弄清楚它应该做什么。
1 - 一开始会更快!
2 - 虽然我们当时并没有叫它这个名字。我们称之为手工执行,我们用铅笔和纸来完成。通常在旧计算机打印输出的背面。是的,很久以前了。那时,我们没有调试器或 IDE。需要打卡并等待 20 分钟才能取回打印输出!
添加回答
举报