这是什么情况啊???
我的代码如下:
import java.util.Scanner;
public class 模拟QQ设置密码时检测长度 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String password1="这个是初值,随便写一个即可";
int length = password1.length();
while(true) {//当字符长度在6~18之间
System.out.println("请输入密码"+"(字符长度在6~18位之间)");//
password1=sc.nextLine();
if(length<6 || length>18){
System.out.println("密码不符合规范,请控制密码长度在6~18位之间");
}else {
System.out.println("恭喜您,密码设定成功");
}
sc.close();
}
}
}
而且没有报错,只是在运行的时候才会跳出来
你调用了sc.close()之后再一次调用了sc.nextLine(),此时因为cs已经closed了,所以报错。你试试把sc.close()放到while循环外面去。我只是猜测,我不会java
不错,你看出了问题所在!不需要关闭Scanner
sc.close()去掉 这个只是开启键盘输入 不需要关闭的
你把sc.close()去掉就不报错了。。
还有你这代码写的有点小错,按照上面👆🏻的代码,你就是输入1位,它也会提示你密码设置成功,建议你把第8行放到第12行下面,当密码设置成功后你可以跳出循环,加个break
sc.close()去掉;
还有中文当类名,非常不可取,比aaa,bbb还不好
别用中文类名,会产生乱码问题,而且Scanner不需要调用close()方法!