Я новичок в Java (на самом деле только на третий день), но наслаждаюсь тем, что, когда дело доходит до изучения нового кода, я делал то же самое, изучая MATLAB как часть моей степени. По сути, мне нравится идти на один шаг дальше, чем каждый урок пытается учить.Java: как проверить вход пользователя?
В настоящее время я пишу базовый калькулятор, который может добавлять, вычитать, умножать и делить два числа и правильно работать с этим основным элементом. Мой «один шаг вперед» в этом случае состоял в том, чтобы повторить программу с возможностью выхода через пользовательский ввод и предотвратить любые ошибки из-за неверных пользовательских входов.
Я смог выполнить повторяющиеся и выходящие разделы этого небольшого проекта, но не смог предотвратить ошибки, вызванные недействительными вводами пользователя, а именно те, которые были вызваны строкой, введенной вместо желаемого Int или Double. Моя цель - предотвратить ошибку и вместо этого запросить допустимый ввод.
Из того, что я собрал, моя проблема может быть решена с помощью заявления Try/Catch, но я не знаю, как правильно реализовать такое утверждение. Мои лучшие попытки, следуя аналогичным примерам онлайн, были встречены неудачей, и я думаю, что это просто так, как я сам закодировал программу. Как я уже сказал, я новичок и использовал множество циклов While Loops для достижения желаемого поведения, и это, вероятно, ужасно неэффективный способ делать что-то.
Надеюсь кто-то может мне точку в правильном направлении,
Конор
Моя лучшая попытка до сих пор:
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();
}
}
Но, как было сказано выше, это, кажется, делает «Первый» невидимым для остальная часть моего кода с ошибкой:
«Локальная переменная Может быть, не была инициализирована»
Также пытался:
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);
Это позволяет коду запускать, но не адресует неверную ошибку ввода.
И я не думаю, что я могу использовать логическое значение, как и то, что зацикливание всей мою программы (? Или вы можете использовать несколько Boolean Я попробовал и получил ошибку)
http://pastebin.com/TTuCNQbx
- Мою программу, чуть более 100 линий длиной
- Область интересов между ~ 45 и 85
Есть тонны учебников там :) Пожалуйста, вернись, как только вы пробовали их, и если вы все еще застряли, и позвольте нам помочь вам тогда. Сначала используйте Google. –
Возможный дубликат [Проверка ввода с использованием java.util.Scanner] (http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner) – xenteros
Я, очевидно, недостаточно объяснил в но я использовал Google и нашел несколько подобных примеров на этом форуме. Однако, когда я попытался выполнить аналогичный процесс с ними (используя Try/Catch), он эффективно нарушил любой код после этого раздела. Лучшим способом описать это было то, что я использовал Try/Catch для переменной «First», а затем любой код, следующий за этим Statement, не смог найти «First» –