Je voudrais gérer cette situation sur la saisie de la mauvaise chaîne, mais une erreur continue à se produire à cause de l'argument d'autre si l'argument.
Essayé essayez, saisissez mais ne savez pas comment l'appliquer à ce code. P>
import java.util.Scanner; public class game { public static void main(String[] args) { System.out.println("let's start the multiplication game."); System.out.println("which times table do you want to choose?"); System.out.println("if you want to do it by your choice, please input number among 2~9. Or if you want to do it randomly, please input number 0"); System.out.println("press \"q\" if you want to quit"); System.out.println("==>"); String input; Scanner s = new Scanner(System.in); input = s.nextLine(); int answer; int multiplier = (int)(Math.random()*8+2); int random = (int)(Math.random()*8+2); if (input.equals("q")) { System.out.print("quit the game."); } else if (Integer.parseInt(input) == 0) { System.out.println(random+"times table has been made automatically."); System.out.print(random+" X "+multiplier+" = "+"? input your answer ==> "); answer = s.nextInt(); if (answer == random*multiplier) { System.out.print("You're right!"); } else { System.out.print("Wrong! The right answer is "+random*multiplier+"."); } } else if (Integer.parseInt(input)>=2 && Integer.parseInt(input)<=9) { int number = Integer.parseInt(input); System.out.println("You chose"+number+" times table."); System.out.print(number+" X "+multiplier+" = "+"? input your answer ==> "); answer = s.nextInt(); if (answer == number*multiplier) { System.out.print("You're right!"); } else { System.out.print("Wrong! The right answer is "+number*multiplier+"."); } } else { System.out.print("Error. Please try again."); } } }
8 Réponses :
if(check>0){ ... }
Je devrais étudier davantage sur l'essayer de continuer à utiliser l'utilisation. En tout cas merci! Je vais essayer cette approche aussi.
Avant d'autres blocs, vous pouvez analyser l'entrée comme celle-ci:
if (parsedInput == 0) { ... } else if (parsedInput >= 2 && parsedInput <= 9) {...}
Je pense que je devrais en savoir plus sur le codage de style si-retour. Merci :)
Essayez ceci, il peut gérer exception
Merci. Enfin, vous avez eu comment utiliser Essayez d'attraper ce code.
Il vous suffit de vérifier que l'entrée fournie par l'utilisateur est numéro ou non. Avant de l'analyser.
J'ai ajouté de nouveaux jeu de classe publique { p> iSnumberic code> qui renvoie le drapeau booléen en fonction de l'entrée de l'utilisateur et vérifiez-la. P>
public static void main(String[] args) {
System.out.println("let's start the multiplication game.");
System.out.println("which times table do you want to choose?");
System.out.println(
"if you want to do it by your choice, please input number among 2~9. Or if you want to do it randomly, please input number 0");
System.out.println("press \"q\" if you want to quit");
System.out.println("==>");
String input;
Scanner s = new Scanner(System.in);
input = s.nextLine();
int answer;
int multiplier = (int) (Math.random() * 8 + 2);
int random = (int) (Math.random() * 8 + 2);
Game game = new Game();
boolean isvalid = game.isNumeric(input);
if (input.equals("q")) {
System.out.print("quit the game.");
}
else if (isvalid && Integer.parseInt(input) == 0) {
System.out.println(random + "times table has been made automatically.");
System.out.print(random + " X " + multiplier + " = " + "? input your answer ==> ");
answer = s.nextInt();
if (answer == random * multiplier) {
System.out.print("You're right!");
} else {
System.out.print("Wrong! The right answer is " + random * multiplier + ".");
}
}
else if (isvalid && Integer.parseInt(input) >= 2 && Integer.parseInt(input) <= 9) {
int number = Integer.parseInt(input);
System.out.println("You chose" + number + " times table.");
System.out.print(number + " X " + multiplier + " = " + "? input your answer ==> ");
answer = s.nextInt();
if (answer == number * multiplier) {
System.out.print("You're right!");
} else {
System.out.print("Wrong! The right answer is " + number * multiplier + ".");
}
}
else {
System.out.print("Error. Please try again.");
}
}
public static boolean isNumeric(String str)
{
for (char c : str.toCharArray())
{
if (!Character.isDigit(c)) return false;
}
return true;
}
Merci pour votre suggestion. Je vais l'essayer après avoir étudié une syntaxe plus connexe.
Il est évident que vous obtenez cette erreur parce que vous appelez ci-dessous est l'ensemble du code p> } p> p> integer.parseint code> sur une variable de chaîne qui ne contient pas de
integer code>. Ce que vous devriez faire est de mettre un chèque une fois que vous avez reçu l'entrée pour vérifier si la chaîne contient ce dont vous avez besoin. Quelque chose comme ci-dessous
Merci pour l'explication type. Mais je ne comprends toujours pas que le résultat de l'entrée.Charat (0) peut être comparable à une autre chaîne comme '0' ou '9' en utilisant> = ou <=. Parce que ces résultats ne sont pas de type entier, n'est-ce pas?
@Kris puisque les deux opérandes sont de type Char code> (0 et INPUT.CHARAT (0)), vous pouvez faire la comparaison comme celle-ci car JVM favorisera ce caractère à l'adresse d'exécution à l'exécution de cette comparaison.
Vous ne pouvez pas envoyer de valeurs comme a, b, c etc. pour Integer.parseint (String S) HTTPS: / /docs.oracle.com/javase/7/docs/api/java/lang/integer.html#parseint(java.lang.string) J'ai essayé d'attraper le bloc pour attraper l'exception numériques avec le message pour entrer entier valide
public static void main(String args[]) { System.out.println("let's start the multiplication game."); System.out.println("which times table do you want to choose?"); System.out.println("if you want to do it by your choice, please input number among 2~9. Or if you want to do it randomly, please input number 0"); System.out.println("press \"q\" if you want to quit"); System.out.println("==>"); String input; Scanner s = new Scanner(System.in); input = s.nextLine(); int answer; int multiplier = (int)(Math.random()*8+2); int random = (int)(Math.random()*8+2); try { if (input.equals("q")) { System.out.print("quit the game."); } else if (Integer.parseInt(input) == 0) { System.out.println(random+"times table has been made automatically."); System.out.print(random+" X "+multiplier+" = "+"? input your answer ==> "); answer = s.nextInt(); if (answer == random*multiplier) { System.out.print("You're right!"); } else { System.out.print("Wrong! The right answer is "+random*multiplier+"."); } } else if (Integer.parseInt(input)>=2 && Integer.parseInt(input)<=9) { int number = Integer.parseInt(input); System.out.println("You chose"+number+" times table."); System.out.print(number+" X "+multiplier+" = "+"? input your answer ==> "); answer = s.nextInt(); if (answer == number*multiplier) { System.out.print("You're right!"); } else { System.out.print("Wrong! The right answer is "+number*multiplier+"."); } } else { System.out.print("Error. Please try again."); } } catch (NumberFormatException e ) { System.out.print("pleae enter Valid integer"); }
Merci! Essayé par ce code et est venu à réaliser à nouveau comment utiliser essayer le bloc de capture.
Pourquoi ne pas utiliser d'essayer d'attraper?
En fait j'ai essayé, mais j'ai échoué parce que je ne connaissais pas l'utilisation exacte. Et maintenant je pouvais essayer à nouveau par vous et les conseils des autres! Merci beaucoup :)
Vérifiez l'entrée dans deux blocs distincts si / sinon. Ajoutez ce code à votre relevé "autre" pour attraper des chaînes autres que "q".
Merci pour l'information. Je vais appliquer cela essayer à nouveau à ce code.