我是刚学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这三种来源的提醒,该怎么写呢?
你的写错了,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中是读入下一个输入,但是又没有下一个输入因此程序卡在这不继续运行了,实际上是在等待你继续输入
这应该用循环控制,你写的不合理,
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("输入完毕");