对于Scanner的值的判断怎么进行啊?

我是刚学java的新手,老师让我们编写一个方法,要求从键盘获取一个值,这个值只能是ABC这三种,如果是其他的话就输出输入值错误,重新从键盘获取;我写的代码是这样的 public static void checkSource(){
System.out.println("请输入新闻来源");
Scanner s6=new Scanner(System.in);
System.out.println("A.报纸");
System.out.println("B.网络");
System.out.println("C.原创");
String source=null;
if (s6.next().equals("A") ){
source="A";
} else if(s6.next().equals("B")){
source="B";
}else if(s6.next().equals("C")){
source="C";
}else {
System.out.println("请输入ABC这三种来源");
checkSource();
}
System.out.println("输入完毕");

}
    我输入一个A的话可以得到输入完毕这个提示,如果B和C会没有反应的,输出其他的字符也得不到请输入ABC这三种来源的提醒,该怎么写呢?

3个回答

你的写错了,s6.next()每执行一次,就会执行一次等待你键盘输入值。

正确写法如下:
System.out.println("请输入新闻来源");
System.out.println("A.报纸");
System.out.println("B.网络");
System.out.println("C.原创");
String value=new Scanner(System.in).next();
String source=null;
if (value.equals("A") ){
source="A";
} else if(value.equals("B")){
source="B";
}else if(value.equals("C")){
source="C";
}else {
System.out.println("请输入ABC这三种来源");
checkSource();
}
System.out.println("输入完毕");
} //要给我分哦~~~~~~

应该是
some_str = s6.next()
先将输入保存,然后再比对,否则你这样在else中是读入下一个输入,但是又没有下一个输入因此程序卡在这不继续运行了,实际上是在等待你继续输入

xuejiewoaini
xuejiewoaini 怎么将输入保存呢,some_str=s6.next.();报错啊
4 年多之前 回复

这应该用循环控制,你写的不合理,

 System.out.println("请输入新闻来源");
Scanner s6=new Scanner(System.in);
System.out.println("A.报纸");
System.out.println("B.网络");
System.out.println("C.原创");
String source=null;
 while(String tmp =  s6.next()){
if (tmp.equals("A") ){
source="A";
break;
} else if(tmp.equals("B")){
source="B";
break;
}else if(tmp.equals("C")){
source="C";
break;
}else {
System.out.println("请输入ABC这三种来源");
}
}

System.out.println("输入完毕");
xuejiewoaini
xuejiewoaini 可是while(String tmp = s6.next()){ 这里报错啊
4 年多之前 回复
立即提问
相关内容推荐