首页 新闻 会员 周边

JAVA--我的代码运行前没有报错,可是就是运行不下去了,这是什么情况??大佬求解答?

0
悬赏园豆:5 [待解决问题]


这是什么情况啊???
我的代码如下:


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();
		}
		
	}
}

而且没有报错,只是在运行的时候才会跳出来

icychain的主页 icychain | 菜鸟二级 | 园豆:201
提问于:2020-04-24 16:53
< >
分享
所有回答(5)
1

你调用了sc.close()之后再一次调用了sc.nextLine(),此时因为cs已经closed了,所以报错。你试试把sc.close()放到while循环外面去。我只是猜测,我不会java

会长 | 园豆:12401 (专家六级) | 2020-04-24 17:03

不错,你看出了问题所在!不需要关闭Scanner

支持(0) 反对(0) 小锅牛 | 园豆:189 (初学一级) | 2020-04-30 22:04
0

sc.close()去掉 这个只是开启键盘输入 不需要关闭的

胖头陀春天 | 园豆:283 (菜鸟二级) | 2020-04-24 17:28
0

你把sc.close()去掉就不报错了。。
还有你这代码写的有点小错,按照上面👆🏻的代码,你就是输入1位,它也会提示你密码设置成功,建议你把第8行放到第12行下面,当密码设置成功后你可以跳出循环,加个break

12赞 | 园豆:204 (菜鸟二级) | 2020-04-25 21:12
0

sc.close()去掉;
还有中文当类名,非常不可取,比aaa,bbb还不好

闪存最后一个地球人 | 园豆:889 (小虾三级) | 2020-04-26 10:45
0

别用中文类名,会产生乱码问题,而且Scanner不需要调用close()方法!

小锅牛 | 园豆:189 (初学一级) | 2020-04-30 22:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册