在java中如果Scanner的输入值类型与设定的类型不一样要从新再次输入应该怎样解决

try{System.out.println("请选择玩家职业:1.武士\t2.法师\t3.召唤师");intzhiy=input.nextInt();switch(zh... try{
System.out.println("请选择玩家职业:1. 武士\t2. 法师\t3. 召唤师");
int zhiy = input.nextInt();
switch(zhiy){
case 1:
zhans();
break;
case 2:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
break;
case 3:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
break;
default:
System.err.println("选择不正确,请重新选择!");
break;

}
}catch(Exception e){
System.out.println("选择错误!程序退出!");
System.exit(1);
本身输入应为int型数据 但是输入的如果是String 类型数据 程序便会出错 我想出错之后再次从新运行此方法让玩家再次选择知道输入正确之后在运行下面的代码 应该怎么写?
}
此代码使用java语言编写!
展开
 我来答
死后是好人
2011-09-30 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:965万
展开全部
直接读取成String类型的再判断好了
String str=input.next();
if(str.replaceAll("[0-9]","").length()!=0)输入的不是int类型的
使用循环,如果选择正确就跳出循环
那个用try catch的想法挺好但是只能选错一次,第二次再错就不行了
hexinlinwo
2011-09-30 · TA获得超过1137个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:338万
展开全部
由于你只贴上了部分代码,我也自己进行了小改动保证代码能够执行,代码贴上,谢谢采纳:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

boolean flag = true;
while(flag) {
try{
System.out.println("请选择玩家职业:1. 武士\t2. 法师\t3. 召唤师");
Scanner input = new Scanner(System.in);
int zhiy = input.nextInt();
switch(zhiy){
case 1:
System.out.println("你选择的是武士");
flag = false;
break;
case 2:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
flag = false;
break;
case 3:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
flag = false;
break;
default:
System.err.println("选择不正确,请重新选择!");
break;

}
}catch(Exception e){
System.out.println("选择错误!");

}
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潭欧莲
2011-09-30 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:118
采纳率:100%
帮助的人:96.6万
展开全部
我刚才帮你想了一段时间,我觉得唯有这样
你想实现的功能完全没问题。
不行你运行看看 我运行的了
import java.util.*;

public class error {
static void zhans(){

}
static void newway(){
System.out.println("请选择玩家职业:1. 武士\t2. 法师\t3. 召唤师");
Scanner input=new Scanner(System.in);
int zhiy = input.nextInt();
switch(zhiy){
case 1:
zhans();
break;
case 2:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
break;
case 3:
System.out.println("此职业未开通,敬请期待!O(∩_∩)O~");
break;
default:
System.err.println("选择不正确,请重新选择!");
break;
}}

public static void main(String[] args){

try{
newway();

}catch(Exception e){
System.out.println("选择错误!程序退出!");
newway();
}}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
H_Y_H
2011-09-30 · TA获得超过154个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:197万
展开全部
错误贴上来是异常?
追问
我想在异常之后再次返回到try代码块里运行 直到输入正确再运行switch里的代码
追答
int zhiy = -1;
while(zhiy<0){
try{
zhiy = input.nextInt();
}catch(Exception e){
zhiy = -1;
System.out.println("xxxxxxxxxxxxxx");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式