J'ai créé un programme de conversion de devises, et il nécessite une entrée utilisateur. À un moment donné du programme, je demande la monnaie à laquelle ils aimeraient convertir. Cependant, rien ne les empêche de mettre en "java" comme monnaie, ou n'importe quel autre mot.Exception de jetée, même avec le type de données correct
Voici mon code actuel, je vais vous expliquer un peu plus ce que je cherche plus bas:
import java.util.Scanner;
public class Exchange {
public static void main(String[] args) {
int i = 1;
Scanner inn = new Scanner(System.in);
try{
while (i > 0){
double USDrate = 0.12808;
double EURrate = 0.107643821;
double GBPrate = 0.098872935;
System.out.println("Hello, what currency would you like to convert to?");
System.out.println("Types: USD/EUR/GBP");
String type = inn.nextLine();
System.out.println("Hello, how much would you like to convert?");
double NOK = inn.nextDouble();
if(type.equalsIgnoreCase("USD")){
System.out.printf(NOK + "kr equals $%.2f \n", (NOK*USDrate));
}else if(type.equalsIgnoreCase("EUR")){
System.out.printf(NOK + "kr equals €%.2f \n", (NOK*EURrate));
}else if(type.equalsIgnoreCase("GBP")){
System.out.printf(NOK + "kr equals £%.2f \n", (NOK*GBPrate));
}else {
// This is where I would like to throw an exception if what they put in doesn't make sense.
}
inn.nextLine();
System.out.println("Would you like to convert more?");
System.out.println(" YES/NO ");
String ans = inn.nextLine();
if(ans.equalsIgnoreCase("NO")){
i = 0;
}
}
}
catch(Exception e){
System.out.println("You've entered an incorrect value! Restart.");
}
}
}
Je veux l'exception à avoir lieu sous la dernière else
-Déclaration dans le while
-loop , comme vous pouvez le voir, j'ai un commentaire disant exactement cela. Je voudrais aussi avoir la même exception dans le bloc de code où je demande s'ils aimeraient convertir plus.
Toute personne pouvant vous aider? Si les détails dont vous avez besoin sont manquants, je les donnerai sur demande.
Merci d'avance. J'ai compris comment faire comme je le voulais. Aucune exception nécessaire, mais voici ma solution:
import java.util.Scanner;
public class Exchange {
public static void main(String[] args) {
int i = 1;
Scanner inn = new Scanner(System.in);
try{
while (i > 0){
double USDrate = 0.12808;
double EURrate = 0.107643821;
double GBPrate = 0.098872935;
System.out.println("Hello, what currency would you like to convert to?");
System.out.println("Types: USD/EUR/GBP");
String type = inn.nextLine();
if(!type.equalsIgnoreCase("USD") && !type.equalsIgnoreCase("EUR") && !type.equalsIgnoreCase("GBP")){
System.out.println("Not available currency! Try again.");
break;
}
System.out.println("How much would you like to convert?");
double NOK = inn.nextDouble();
if(type.equalsIgnoreCase("USD")){
System.out.printf(NOK + "kr equals $%.2f \n", (NOK*USDrate));
}else if(type.equalsIgnoreCase("EUR")){
System.out.printf(NOK + "kr equals €%.2f \n", (NOK*EURrate));
}else if(type.equalsIgnoreCase("GBP")){
System.out.printf(NOK + "kr equals £%.2f \n", (NOK*GBPrate));
}
inn.nextLine();
System.out.println("Would you like to convert more?");
System.out.println(" YES/NO ");
String ans = inn.nextLine();
if(ans.equalsIgnoreCase("NO")){
i = 0;
}
}
}
catch(Exception e){
System.out.println("You've entered an incorrect value! Restart.");
}
}
}
Utilisé une autre méthode :) Merci pour les réponses de toute façon, ils ont beaucoup aidé.
Qu'avez-vous essayé? Vous semblez être à 99% du chemin. En outre, vous n'avez pas nécessairement besoin d'une exception ici. Vous pouvez simplement pré-vérifier la devise et faire une boucle lorsque l'entrée est mauvaise. – Carcigenicate
Pour "avoir une exception" vous devez le lancer: 'throw new SomeException()', mais je ne pense pas que ce soit ce que vous voulez –
Comment voulez-vous procéder à la pré-vérification de la devise et "loop while the input is bad "? Si cela ne vous dérange pas. Je suis très frais, donc je ne comprends pas encore tous les termes. Pourquoi je ne veux pas d'exception et quand le voudrais-je? Pardonnez toutes les questions, mais j'apprécie vraiment l'aide. –