私はJavaに慣れていませんが(実際は3日目のみですが)、新しいコードを学習するのは楽しいです。私の学位の一部としてMATLABを学ぶときも同じでした。本質的に私は、それぞれのレッスンが教えようとしていることよりも一歩進んでいくのが好きです。Java:ユーザー入力を検証する方法
私は現在、2つの数値を加算、減算、乗算、除算し、そのコア要素を正しく動作させる基本的な電卓を作成しています。この場合の私の「一歩前進」は、ユーザー入力を介して終了し、無効なユーザー入力によるエラーを防止するオプションでプログラムを繰り返すことでした。
私はこの小さなプロジェクトの繰り返しセクションと終了セクションを完成させることができましたが、無効なユーザー入力、つまり目的のIntやDoubleの代わりにStringが入力されたことによるエラーを防ぐことができませんでした。私の目標は、エラーを防ぎ、代わりに有効な入力を求めることです。
私が集めたことから、私の問題はTry/Catch Statementを使って対処できますが、このような文を正しく実装する方法はわかりません。私の最高の試みは、オンラインで同様の事例を実行した後に失敗したことになります。これは、プログラム自体をコード化したものです。私が言ったように、私は新しく、多くのWhileループを使用して目的の動作を達成しましたが、これはおそらく非常に非効率的なやり方です。
うまくいけば、誰かがこれまでの私の最高の試み、
コナー
正しい方向に私を指すことが可能である:
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();
}
}
しかし、上述したように、これは「第1」見えないように思わ
"ローカル変数Firstが初期化されていない可能性があります"
また、試してみてください:
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);
これにより、コードは実行できますが、無効な入力エラーは処理されません。
そして、私はそれが私の全体のプログラム(またはあなたが私はそれを試してみましたが、エラーを得た複数のブールを使用することができますか?)
http://pastebin.com/TTuCNQbx
ループしているものであるように私は、ブールを使用することができるとは思わない - 私のプログラムを、
長いだけで100行以上 - 〜45および85
があります。まずgoogleを使用してください。 –
[java.util.Scannerを使用して入力を検証する]の可能な複製(0120-365-990)。 – xenteros
私は明らかに、私はGoogleを使い、この非常にフォーラムでいくつかの似たような例を見つけました。しかし、私がTry/Catchを使用して同様のプロセスを実行しようとすると、このセクションの後にコードが破損してしまいました。それを記述する最善の方法は、変数「最初に」を試した後に、その文に続くコードが「最初」を見つけることができなかったことです。 –