我正在创建一个.jsp页面时遇到了问题。对于那些担心的人,这个网站是为了完成作业而创建的,但我试图超越要求,不涉及成绩相关内容,仅出于自己的利益。
言归正传: 我从用户那里获取输入,执行 method="post" 方法并刷新页面,在理想情况下它可以正常工作(这是作业的要求)。然而,我正试图在用户将字符串输入到 int 字段的情况下使用 try/catch 块。
我尝试将 "NumberFormatException" 更改为 "Exception",但返回的错误代码仍相同。 之前,我的 try catch 位于 if() 语句之前,这样可以工作,但没有显示我想要的警报框。
以下是该代码:
任何帮助都是受欢迎的,您的时间也很宝贵。非常感谢! 编辑: 抱歉,本来是想复制粘贴错误代码的:
言归正传: 我从用户那里获取输入,执行 method="post" 方法并刷新页面,在理想情况下它可以正常工作(这是作业的要求)。然而,我正试图在用户将字符串输入到 int 字段的情况下使用 try/catch 块。
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",但返回的错误代码仍相同。 之前,我的 try catch 位于 if() 语句之前,这样可以工作,但没有显示我想要的警报框。
以下是该代码:
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"
编辑2: 备份/编辑/测试@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.");
}
}
我知道有很多术语,但这就是最终结果。不知何故,这一切都运作良好。感谢所有帮助过我的人!