使用Java和HTML获取两个字符串输入之和的正确方法是什么?
我试图创建一个HTML页面,用户在其中输入2个数字作为字符串,单击submit,然后显示总和。在解析过程中,我搞砸了一些东西,我不知道如何更正它。如何解决此问题使用Java和HTML获取两个字符串输入之和的正确方法是什么?,java,html,Java,Html,我试图创建一个HTML页面,用户在其中输入2个数字作为字符串,单击submit,然后显示总和。在解析过程中,我搞砸了一些东西,我不知道如何更正它。如何解决此问题 java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838) java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.ja
java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
java.base/java.lang.Float.parseFloat(Float.java:461)
basicaddition.BasicAddition.processRequest(BasicAddition.java:42)
守则:
String EmptyError = "";
String FirstNumber = request.getParameter("FirstNumber");
String SecondNumber = request.getParameter("SecondNumber");
float firstNumber = Float.parseFloat(FirstNumber);
float secondNumber = Float.parseFloat(SecondNumber);
if(FirstNumber.isBlank() && SecondNumber.isBlank())
{
EmptyError = "There is no sum";
}
else {
try {
firstNumber = Float.parseFloat(FirstNumber);
} catch (NumberFormatException ex) {
EmptyError = "Value is not a number";
}
try {
secondNumber = Float.parseFloat(SecondNumber);
} catch (NumberFormatException ex) {
EmptyError = "Value is not a number";
}
}
Float Result = firstNumber + secondNumber;
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet BasicAddition</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Returns the sum of two numbers, ");
out.println("</h1>");
out.println("<input type='text' name='FirstNumber' />");
out.println(EmptyError);
out.println("<input type='text' name='SecondNumber' />");
out.println(EmptyError);
out.println("<input type='submit' value='Get the sum' />");
out.println(EmptyError);
out.println(Result);
out.println("<h1>Servlet BasicAddition at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
String emptyyror=”“;
字符串FirstNumber=request.getParameter(“FirstNumber”);
字符串SecondNumber=request.getParameter(“SecondNumber”);
float firstNumber=float.parseFloat(firstNumber);
float secondNumber=float.parseFloat(secondNumber);
if(FirstNumber.isBlank()&&SecondNumber.isBlank())
{
EmptyError=“没有金额”;
}
否则{
试一试{
firstNumber=Float.parseFloat(firstNumber);
}捕获(NumberFormatException ex){
EmptyError=“值不是数字”;
}
试一试{
secondNumber=Float.parseFloat(secondNumber);
}捕获(NumberFormatException ex){
EmptyError=“值不是数字”;
}
}
浮点结果=第一个数字+第二个数字;
setContentType(“text/html;charset=UTF-8”);
尝试(PrintWriter out=response.getWriter()){
/*TODO在此处输出您的页面。您可以使用以下示例代码*/
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“Servlet基本编辑”);
out.println(“”);
out.println(“”);
println(“返回两个数字的和,”);
out.println(“”);
out.println(“”);
out.println(清空错误);
out.println(“”);
out.println(清空错误);
out.println(“”);
out.println(清空错误);
out.println(结果);
println(“位于“+request.getContextPath()+”的Servlet基本条件);
out.println(“”);
out.println(“”);
我看到您正在尝试分析条件之前的数字
float firstNumber = Float.parseFloat(FirstNumber);
float secondNumber = Float.parseFloat(SecondNumber);
这两行抛出异常,因为FirstNumber和SecondNumber不是有效的数字!在
if
条件中,必须使用'OR'运算符。否则至少有一个条件为false
它会跳到else
。在if之前,必须将字符串
转换为浮点
代码>语句。检查以下代码:
String EmptyError = "";
String FirstNumber = request.getParameter("FirstNumber");
String SecondNumber = request.getParameter("SecondNumber");
float firstNumber, secondNumber;
if (FirstNumber.isBlank() || SecondNumber.isBlank()) {
EmptyError = "There is no sum";
} else {
//Rest of the code
}
可能是因为行float firstNumber=float.parseFloat(firstNumber);float secondNumber=float.parseFloat(secondNumber)上的空字符串解析;除非本文的全部目的是了解Servlet API,否则我强烈建议使用像Spring MVC这样的合理框架来为您处理所有这些问题。