作成している.jspページに問題があります。心配な方のために、宿題用のサイトでしたが、必要以上のことを考えており、採点については何も聞いていません。これは厳密に私自身の利益のためです。
ビジネスに至るまで:私はユーザーから入力を受け取り、method = "post"を実行してページを更新し、理想的な状況では機能します(それは宿題でした)。しかし、私はtry/catchを作成しようとしています。ユーザーがintフィールドに文字列を入力した場合はブロックします。
int Svolt = 0;
double Amperes = 0.0;
double LEDdrop = 0.0;
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch ( NumberFormatException e ) {
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}
「NumberFormatException」を「Exception」に切り替えてみましたが、同じエラーコードが返されました。以前、if()ステートメントの前にtry catchを実行しましたが、機能しましたが、必要なアラートボックスが表示されませんでした。
そのコードは以下のとおりです。
final double MA_TO_A = 0.001;
int Svolt = 0;
double Amperes = 0.0;
double LEDdrop = 0.0;
try {
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}
Amperes = Double.parseDouble(request.getParameter("Amperes"));
LEDdrop = Double.parseDouble(request.getParameter("LEDdrop"));
out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
}
} catch (Exception e) {
out.println("Please make sure your inputs are correct.");
}
どんな助けでもありがたいです、そしてあなたの時間もそうです。どうもありがとうございます!
編集:申し訳ありませんが、エラーコードをコピーして貼り付けることを意味します:
org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "a"
テストされた入力が文字列「a」であった場合
EDIT2:バックアップ/編集/テスト@Nambariの提案
final double MA_TO_A = 0.001;
int Svolt = 0;
double Amperes = 20.0;
double LEDdrop = 1.8;
try {
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}
out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
}
} catch (Exception e) {
out.println("Please make sure your inputs are correct.");
}
出力:理想的な抵抗は:-90.0オーム
警告ボックス(「ソース電圧は整数である必要があります。これを修正してください。」)
エラーコードはありません。
out.printlnは(「入力が正しいことを確認してください」)と言っていません。
最終編集:
コードはほぼ希望どおりに機能するようになりましたが、十分に機能します。
final double MA_TO_A = 0.001;
int Svolt;
double Amperes;
double LEDdrop;
if (request.getParameter("Svolt") != null)
{
try
{
try
{
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
Svolt = 0;
}
try
{
Amperes = Double.parseDouble(request.getParameter("Amperes"));
} catch (Exception e)
{
%>
<script type = "text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
Amperes = 0.0;
}
try
{
LEDdrop = Double.parseDouble(request.getParameter("LEDdrop"));
} catch (Exception e)
{
%>
<script type = "text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
LEDdrop = 0.0;
}
out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
} catch (Exception e)
{
out.println("Please make sure your inputs are correct.");
}
}
専門用語がたくさんありますが、それが最終結果です。どういうわけか、これはすべて機能しています。助けてくれたすべての人に感謝します!