JAVA方法调用中Scanner出现异常,at java.util.Scanner.throwFor(Scanner.java:862)

我定义了一个判断输入的是否为数字,并且符合要求范围内数字的方法,全部符合就返回正确结果,里面用到了Scanner类,但是只要调用第二次的时候就会出错。下面截图中例子是直接... 我定义了一个判断输入的是否为数字,并且符合要求范围内数字的方法,全部符合就返回正确结果,里面用到了Scanner类,但是只要调用第二次的时候就会出错。

下面截图中例子是直接在主类里面调用二次的,我的代码其实是在Menu类里面的2个方法分别调用了一次,结果都是错误的,另外这方法就算写道调用该方法的类里面也会错

还有,去掉input.close(); 还是一样会错,但是错误的提示位置不固定了- -

//
判断输入的是否正确的方法,在Manager类里

主类调用

结果,(第二次调用的时候就会错误)
还有。。。。。 就算不是二次调用该方法,假如只调用一次,后面再用一次Scanner也会错。。
展开
 我来答
匿名用户
2014-04-09
展开全部
你就不能把sanner放到main方法中,传值过去
追问
manager.getChoice(input,0,2, "error"); 
这样?
试了下,不行,还是同样的错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
书春致i
2014-04-09 · TA获得超过102个赞
知道答主
回答量:85
采纳率:0%
帮助的人:65.4万
展开全部
把第一次调用控制台输出贴出来!
更多追问追答
追问
第一次调用就是2呀,第二次就是错了,没有输出
追答
那你输入的是什么?我的意思是那个2,貌似是你输入的吧,并不是return的结果吧,如果是return的结果,那你输入的是几?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
longlongzhuerr
2014-04-09 · TA获得超过322个赞
知道小有建树答主
回答量:243
采纳率:100%
帮助的人:228万
展开全部
你这个方法写的太复杂了,好像可以简化,但是我不知道你这个函数是判断什么的,你可以说具体点吗?
更多追问追答
追问
  1. 输入

  2. 判断输入的是否为数字

  3. 判断是否输入的数字是否在max和mini之间,不在的话就是提示errorMessage

  4. 最后返回正确的值

追答

你看看,不知道是不是你想要的那种。

import java.util.Scanner;
public class Test{
public static boolean isDigit(String input,String errorMsg)
{//判断参数是不是数字,不是就打印错误信息参数
for(int i=0;i<input.length();i++)
{
if(Character.isDigit(input.charAt(i))==false)
{
System.out.println(errorMsg);
return false;
}
}
return true;
}
public static int getValue(String input,int min,int max,String errorMsg)
{//将参数转换成int型,判断是否符合范围,不符合就打印错误参数信息,并返回这个值。
Integer in=Integer.parseInt(input);
if(in>max||in<min)
{
System.out.println(errorMsg);
}
return in;
}
public static void main(String ar[])
{
Scanner input=new Scanner(System.in);
while(input.hasNext())
{
String line=input.next();
if(isDigit(line,"你输入的不是数字"))
{
System.out.println(getValue(line,10,1000,"你输入的数据不在10~1000之间")+"\n--------------------");
}
}

}
}

运行结果:

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式