Java: Comment Valider la Saisie de l'Utilisateur?

Je suis nouveau sur Java (en fait, seul sur mon troisième jour), mais plaisir de me pousser quand il s'agit de l'apprentissage d'un nouveau bout de code, j'ai fait de même lors de l'apprentissage de MATLAB dans le cadre de mon Diplôme. En substance, j'aime aller une étape plus loin que ce que chaque leçon est en train d'enseigner.

Je suis actuellement à la rédaction d'une Calculatrice de base qui peut ajouter, soustraire, multiplier et diviser deux nombres et l'élément de base de travail correctement. Mon "plus loin" dans cette affaire était de rendre le programme de répéter avec l'option de sortie via la saisie de l'utilisateur et pour éviter toute erreur due à la non valide les entrées de l'utilisateur.

J'ai été en mesure de terminer la répétition et de la sortie des sections de ce petit projet, mais ont été incapables de prévenir les erreurs causées par les non valide les entrées de l'utilisateur, notamment ceux causés par une Chaîne d'entrée à la place de l'souhaité Int ou Double. Mon objectif est de prévenir l'erreur et au lieu de demander une entrée valide.

De ce que j'ai recueillies, mon problème peut être résolu grâce à l'utilisation d'une Instruction Try/Catch, mais je n'ai aucune idée de comment mettre en œuvre une telle déclaration correctement. Mes meilleures tentatives, à la suite de semblables-ish exemples en ligne ont été voués à l'échec, je pense que c'est tout simplement vers le bas à la façon dont j'ai codé le programme lui-même. Comme je l'ai dit, je suis nouvelle et ont utilisé beaucoup de Boucles While pour obtenir le comportement souhaité et c'est probablement une horriblement inefficace façon de faire les choses.

J'espère que quelqu'un est capable de me pointer dans la bonne direction,

Conor

Ma meilleure tentative à ce jour:

int InputValue;
InputValue = 1;
while (InputValue == 1)
{
    try
    {
        System.out.print ("Enter First Number: ");
        First = Input.nextDouble ();
        InputValue = 0;
    }
    catch (NumberFormatException e)
    {
        System.out.println ("Invalid Input");
        System.out.println (" ");
        System.out.print ("Enter First Number: ");
        First = Input.nextDouble ();
    }
}

Mais comme indiqué ci-dessus, ce qui semble faire la "Première" invisible pour le reste de mon code avec l'erreur:

"La variable locale Première peut ne pas avoir été initialisé"

Aussi essayé:

int InputValueX;
InputValueX = 1;
do
{
    System.out.println (" ");
    System.out.print ("Enter First Number: ");
    while (!Input.hasNextDouble ())
    {
        System.out.println ("Invalid Input");
        Input.next ();
    }
    First = Input.nextDouble ();
    InputValueX = 0;
}
while (InputValueX == 1);

Cela permet l'exécution de code mais n'a pas d'adresse non valide erreur d'entrée.

Et je ne pense pas que je peux utiliser un Booléen comme c'est ce qui est le bouclage de l'ensemble de mon programme (ou vous pouvez utiliser plusieurs Booléens? J'ai essayé et eu des erreurs)

http://pastebin.com/TTuCNQbx

- Mon Programme, un peu plus de 100 lignes de long

- Zone d'intérêt entre ~ 45 et 85

  • Il y a des tonnes de tutos là-bas 🙂 s'il vous Plaît revenir une fois que vous avez essayé et SI vous êtes toujours coincé et laissez-nous vous aider ensuite. L'utilisation de google en premier.
  • Double Possible de la Validation d'une entrée à l'aide de java.util.Scanner
  • Évidemment je n'ai pas expliqué assez bien dans le post, mais j'ai utilisé Google et trouvé quelques exemples similaires dans ce forum. Cependant, quand j'ai tenté de suivre un processus similaire à ceux (utilisation de Try/Catch), il a effectivement cassé le code après cette section. La meilleure façon de le décrire c'est que j'ai utilisé le Try/Catch sur la Variable "Première" et puis sur tout le code à la suite de cette Déclaration, qui ne pouvait pas trouver de "Premières"
InformationsquelleAutor Infernox CJC | 2016-08-09