javasanner 报错问题
publicstaticintaaa(){Scannerin=newScanner(System.in);intc=0;while(true){System.out.pr...
public static int aaa(){
Scanner in =new Scanner(System.in);
int c = 0;
while(true){
System.out.println("请输入一位4位整数");
try {
c= in.nextInt();
if(c>999&&c<10000){
break;
}else{
System.out.println("输入有误,请重新输入");
c= in.nextInt();
}
} catch (Exception e) {
System.out.println("请输入整数");
c= in.nextInt();
}
}
in.close();
return c;
}
public static void cai(){
int haoma=(int)(Math.random()*10000);
if(haoma<999)
{
haoma = Integer.parseInt(String.valueOf(haoma)+"0");
}
System.out.println(haoma);
//String ll = "";
int aa = aaa();
if(aa>999&&aa<100000){
while(true){
if(aa==haoma){
System.out.println("你猜对了,可以去买彩票了");
}else{
System.out.println("你猜错了,可以去买彩票了");
}
System.out.println("是否继续Y继续 其他结束");
Scanner sa =new Scanner(System.in);
String ss = sa.next();
if("Y".equals(ss)||"y".equals(ss)){
cai();
}else{
break;
}
sa.close();
}
}else{
aa = aaa();
}
//return ll;
}
public static void main(String[] args) {
System.out.println("欢迎来到猜号小游戏");
cai();
}
Scanner sa =new Scanner(System.in);
String ss = sa.next();
这两行 一直报错
Exception in thread "main" java.util.NoSuchElementException 展开
Scanner in =new Scanner(System.in);
int c = 0;
while(true){
System.out.println("请输入一位4位整数");
try {
c= in.nextInt();
if(c>999&&c<10000){
break;
}else{
System.out.println("输入有误,请重新输入");
c= in.nextInt();
}
} catch (Exception e) {
System.out.println("请输入整数");
c= in.nextInt();
}
}
in.close();
return c;
}
public static void cai(){
int haoma=(int)(Math.random()*10000);
if(haoma<999)
{
haoma = Integer.parseInt(String.valueOf(haoma)+"0");
}
System.out.println(haoma);
//String ll = "";
int aa = aaa();
if(aa>999&&aa<100000){
while(true){
if(aa==haoma){
System.out.println("你猜对了,可以去买彩票了");
}else{
System.out.println("你猜错了,可以去买彩票了");
}
System.out.println("是否继续Y继续 其他结束");
Scanner sa =new Scanner(System.in);
String ss = sa.next();
if("Y".equals(ss)||"y".equals(ss)){
cai();
}else{
break;
}
sa.close();
}
}else{
aa = aaa();
}
//return ll;
}
public static void main(String[] args) {
System.out.println("欢迎来到猜号小游戏");
cai();
}
Scanner sa =new Scanner(System.in);
String ss = sa.next();
这两行 一直报错
Exception in thread "main" java.util.NoSuchElementException 展开
3个回答
展开全部
其实你的问题主要是System.in这个流是个静态的,所以你再aaa方法里面关掉Scanner的同时,导致System.in这个流一起关闭了,所以后续再要通过这流获取数据就不行了,所以你把创建Scanner in =new Scanner(System.in);提出来统一使用一个是个不错的解决办法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-05-14
展开全部
换成nextLine,获取下一行。
追问
一样的!我试了 我发现问题了 :
问题是: 两个方法都用到了 Scanner in =new Scanner(System.in);
把这句话 提出到全局变量就可以了~~
下面的 Scanner sa =new Scanner(System.in); 删除掉
用全局变量的
追答
嗯,可以,统一处理输入流数据。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把close()这个方法注释掉就可以,这个是关闭scanner,如果调用了它,就会报错。
scanner在程序走完就会自己关闭,不要调用这个方法。
scanner在程序走完就会自己关闭,不要调用这个方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询