尝试用循环Java捕获
我是Java的新学生。 也许我不明白try/catch到底是如何工作的。 我正在制作一个Java类游戏,刽子手。 我正在制作一个方法,返回玩家的数量。 我有另一个代码,它可以完美地工作。如果我引入字母而没有Int,它就会崩溃。我试着做这个。 我希望你能理解我尝试用循环Java捕获,java,loops,try-catch,Java,Loops,Try Catch,我是Java的新学生。 也许我不明白try/catch到底是如何工作的。 我正在制作一个Java类游戏,刽子手。 我正在制作一个方法,返回玩家的数量。 我有另一个代码,它可以完美地工作。如果我引入字母而没有Int,它就会崩溃。我试着做这个。 我希望你能理解我 public static int setNumJugadores() { Scanner sc = new Scanner(System.in); int numJugador=0; System.out.prin
public static int setNumJugadores() {
Scanner sc = new Scanner(System.in);
int numJugador=0;
System.out.println("Introduzca el número de jugadores a jugar: ");
// VARIABLES PARA EL TRY CATCH
boolean bError=false;
boolean mayorQueCero=false;
do {
try{
numJugador = sc.nextInt();
}
catch (Exception e){
bError=true;
System.out.println("Error, introduzca un numero entero.");
}
if (numJugador < 1) {
System.out.println("ERROR, introduzca un valor valido mayor de 0");
}
else{
mayorQueCero=true;
}
} while ((!mayorQueCero)||(!bError));
return numJugador;
}
publicstatic int setNumJugadores(){
扫描仪sc=新的扫描仪(System.in);
int numJugador=0;
System.out.println(“引子卡·埃尔·努梅罗·德·朱加多斯·朱加尔:”);
//变数:试捕
布尔bError=false;
布尔mayorQueCero=false;
做{
试一试{
numJugador=sc.nextInt();
}
捕获(例外e){
bError=真;
System.out.println(“错误,引入了一个无编号的肠”);
}
if(numJugador<1){
System.out.println(“错误,引入值为0”);
}
否则{
mayorQueCero=真;
}
}而(!mayorQueCero)| |(!bError));
返回numJugador;
}
问题是,如果有人输入字母,实际上会抛出异常,您将捕获它。但是,这些字符不会从输入中删除。因此,下次尝试读取输入时,仍然会有字符,并且会再次引发异常
添加sc.nextLine();在catch块中,删除坏数据行。这里的问题是
nextInt():将输入的下一个标记扫描为int
当您输入字符时,它抛出异常并转到catch块,程序崩溃
使用以下代码
public static int setNumJugadores() {
Scanner sc = new Scanner(System.in);
String numJugador=null;
System.out.println("Introduzca el número de jugadores a jugar: ");
// VARIABLES PARA EL TRY CATCH
boolean bError=false;
boolean mayorQueCero=false;
do {
try{
numJugador = sc.nextLine();
}
catch (Exception e){
bError=true;
numJugador = null;
System.out.println("Error, introduzca un numero entero.");
}
if (numJugador == null) {
System.out.println("ERROR, introduzca un valor valido mayor de 0");
}
else{
mayorQueCero=true;
}
} while ((!mayorQueCero)||(!bError));
return numJugador;
}
nextLine():使此扫描仪前进超过当前行并返回跳过的输入
有关详细信息,请参阅。谢谢,我做了更多的修复,现在,它工作得非常完美。我可以分享游戏的全部代码吗?