JavaBea+JSP、Servlet+JSP、JavaBean+Servlet+JSP实现复数运算器

冷不防 2024-03-16 12:37 159阅读 0赞

目录

JavaBea+JSP

代码:

JavaBea

JSP

Servlet+JSP

代码:

Servlet:

JSP:

JavaBean+Servlet+JSP

代码:

JavaBean:

Servlet:

JSP:


JavaBea+JSP

代码:

JavaBea

  1. public class Complex {
  2. private double a;
  3. private double b;
  4. public Complex(double a, double b) {
  5. this.a = a;
  6. this.b = b;
  7. }
  8. public Complex add(Complex c) {
  9. return new Complex(this.a + c.a, this.b + c.b);
  10. }
  11. public Complex subtract(Complex c) {
  12. return new Complex(this.a - c.a, this.b - c.b);
  13. }
  14. public Complex multiply(Complex c) {
  15. double a = this.a * c.a - this.b * c.b;
  16. double b = this.a * c.b + this.b * c.a;
  17. return new Complex(a, b);
  18. }
  19. public Complex divide(Complex c) {
  20. double denominator = c.a * c.a + c.b * c.b;
  21. double a = (this.a * c.a + this.b * c.b) / denominator;
  22. double b = (this.b * c.a - this.a * c.b) / denominator;
  23. return new Complex(a, b);
  24. }
  25. public double getA() {
  26. return a;
  27. }
  28. public void setA(double a) {
  29. this.a = a;
  30. }
  31. public double getB() {
  32. return b;
  33. }
  34. public void setB(double b) {
  35. this.b = b;
  36. }
  37. }

JSP

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ page import="com.dong.demo4.bean" %>
  3. <%@ page import="com.dong.demo4.bean.Complex" %>
  4. <html>
  5. <head>
  6. <title>复数计算器</title>
  7. </head>
  8. <body>
  9. <h1>复数计算器</h1>
  10. <form method="post">
  11. <label>第一个复数:</label>
  12. <input type="text" name="num1">
  13. <label>+</label>
  14. <input type="text" name="num2">i
  15. <br>
  16. <label>第二个复数:</label>
  17. <input type="text" name="num3">
  18. <label>+</label>
  19. <input type="text" name="num4">i
  20. <br>
  21. <label>运算符:</label>
  22. <select name="operator">
  23. <option value="+">加法</option>
  24. <option value="-">减法</option>
  25. <option value="*">乘法</option>
  26. <option value="/">除法</option>
  27. </select>
  28. <br>
  29. <br>
  30. <input type="submit" name="submit" value="计算">
  31. </form>
  32. <% if (request.getParameter("submit") != null) { %>
  33. <br>
  34. <h2>计算结果:</h2>
  35. <% double num1 = Double.parseDouble(request.getParameter("num1")); %>
  36. <% double num2 = Double.parseDouble(request.getParameter("num2")); %>
  37. <% double num3 = Double.parseDouble(request.getParameter("num3")); %>
  38. <% double num4 = Double.parseDouble(request.getParameter("num4")); %>
  39. <% Complex c1 = new Complex(num1, num2); %>
  40. <% Complex c2 = new Complex(num3, num4); %>
  41. <%
  42. String op = request.getParameter("operator");
  43. Complex result = null;
  44. switch (op) {
  45. case "+":
  46. result = c1.add(c2);
  47. break;
  48. case "-":
  49. result = c1.subtract(c2);
  50. break;
  51. case "*":
  52. result = c1.multiply(c2);
  53. break;
  54. case "/":
  55. result = c1.divide(c2);
  56. break;
  57. default:
  58. break;
  59. }
  60. %>
  61. <p><%= result.getReal() %><%= result.getImaginary() >= 0 ? "+" : "-" %><%= Math.abs(result.getImaginary()) %>i</p>
  62. <% } %>
  63. </body>
  64. </html>

Servlet+JSP

代码:

Servlet:

  1. import java.io.IOException;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. @WebServlet("/complexCalculatorServlet ")
  7. public class ComplexCalculatorServlet extends HttpServlet {
  8. private static final long serialVersionUID = 1L;
  9. protected void doPost(HttpServletRequest request,
  10. HttpServletResponse response) throws ServletException, IOException {
  11. double num1 = Double.parseDouble(request.getParameter("num1"));
  12. double num2 = Double.parseDouble(request.getParameter("num2"));
  13. double num3 = Double.parseDouble(request.getParameter("num3"));
  14. double num4 = Double.parseDouble(request.getParameter("num4"));
  15. String operator = request.getParameter("operator");
  16. double resultA = 0;
  17. double resultB = 0;
  18. switch (operator) {
  19. case "+":
  20. resultA = num1 + num3;
  21. resultB = num2 + num4;
  22. break;
  23. case "-":
  24. resultA = num1 - num3;
  25. resultB = num2 - num4;
  26. break;
  27. case "*":
  28. resultA = num1 * num3 - num2 * num4;
  29. resultB = num1 * num4 + num2 * num3;
  30. break;
  31. case "/":
  32. double denominator = num3 * num3 + num4 * num4;
  33. resultA = (num1 * num3 + num2 * num4) / denominator;
  34. resultB = (num2 * num3 - num1 * num4) / denominator;
  35. break;
  36. default:
  37. break;
  38. }
  39. // 将结果存储到 request 对象中
  40. request.setAttribute("resultA", resultA);
  41. request.setAttribute("resultB", resultB);
  42. // 转发请求到 JSP 页面
  43. request.getRequestDispatcher("/result.jsp").forward(request, response);
  44. }
  45. }

JSP:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>复数计算器</title>
  5. </head>
  6. <body>
  7. <h1>复数计算器</h1>
  8. <form action="/complexCalculatorServlet"
  9. method="post">
  10. <label>第一个复数:</label>
  11. <input type="text" name="num1">
  12. <label>+</label>
  13. <input type="text" name="num2">i
  14. <br>
  15. <label>第二个复数:</label>
  16. <input type="text" name="num3">
  17. <label>+</label>
  18. <input type="text" name="num4">i
  19. <br>
  20. <label>运算符:</label>
  21. <select name="operator">
  22. <option value="+">加法</option>
  23. <option value="-">减法</option>
  24. <option value="*">乘法</option>
  25. <option value="/">除法</option>
  26. </select>
  27. <br>
  28. <br>
  29. <input type="submit" name="submit" value="计算">
  30. </form>
  31. <% if (request.getAttribute("resultA") != null) { %>
  32. <br>
  33. <h2>计算结果:</h2>
  34. <p><%= request.getAttribute("resultA") %><%= (Double)request.getAttribute("resultB") >= 0 ? "+" : "-" %><%= Math.abs((Double)request.getAttribute("resultB")) %>i</p>
  35. <% } %>
  36. </body>
  37. </html>

JavaBean+Servlet+JSP

代码:

JavaBean:

  1. package com.dong.demo1;
  2. /**
  3. * 模式三:JavaBean+Servlet+JSP
  4. */
  5. /**
  6. * 复数类---JavaBean类
  7. */
  8. public class Complex {
  9. private double real;//实部
  10. private double imaginary;//虚部
  11. public Complex() {
  12. }
  13. public Complex(double real, double imaginary) {
  14. this.real = real;
  15. this.imaginary = imaginary;
  16. }
  17. /**
  18. * @Discription 加法
  19. * @author Lidong
  20. * @param other
  21. * @return
  22. */
  23. public Complex add(Complex other) {
  24. return new Complex(this.real + other.real, this.imaginary + other.imaginary);
  25. }
  26. /**
  27. * @Discription 减法
  28. * @author Lidong
  29. * @param other
  30. * @return
  31. */
  32. public Complex subtract(Complex other) {
  33. return new Complex(this.real - other.real, this.imaginary - other.imaginary);
  34. }
  35. /**
  36. * @Discription 乘法
  37. * @author Lidong
  38. * @param other
  39. * @return
  40. */
  41. public Complex multiply(Complex other) {
  42. double realPart = this.real * other.real - this.imaginary * other.imaginary;
  43. double imaginaryPart = this.real * other.imaginary + this.imaginary * other.real;
  44. return new Complex(realPart, imaginaryPart);
  45. }
  46. /**
  47. * @Discription 除法
  48. * @author Lidong
  49. * @param other
  50. * @return
  51. * @throws ArithmeticException
  52. */
  53. public Complex divide(Complex other) throws ArithmeticException {
  54. double denominator = other.real * other.real + other.imaginary * other.imaginary;
  55. if (denominator == 0) {
  56. throw new ArithmeticException("Divide by zero!");
  57. }
  58. double realPart = (this.real * other.real + this.imaginary * other.imaginary) / denominator;
  59. double imaginaryPart = (-this.real * other.imaginary + this.imaginary * other.real) / denominator;
  60. return new Complex(realPart, imaginaryPart);
  61. }
  62. public double getReal() {
  63. return real;
  64. }
  65. public void setReal(double real) {
  66. this.real = real;
  67. }
  68. public double getImaginary() {
  69. return imaginary;
  70. }
  71. public void setImaginary(double imaginary) {
  72. this.imaginary = imaginary;
  73. }
  74. }

Servlet:

  1. package com.dong.demo1;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.annotation.*;
  5. import java.io.IOException;
  6. @WebServlet("/complexCalc")
  7. public class ComplexCalcServlet extends HttpServlet {
  8. // private static final long serialVersionUID = 1L;
  9. @Override
  10. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  11. throws ServletException, IOException {
  12. //获取第一个复数
  13. String real1Str = request.getParameter("real1");
  14. String imaginary1Str = request.getParameter("imaginary1");
  15. //获取第二个复数
  16. String real2Str = request.getParameter("real2");
  17. String imaginary2Str = request.getParameter("imaginary2");
  18. //获取运算符:{ +、 —— 、* 、/ }
  19. String operator = request.getParameter("operator");
  20. double real1 = Double.parseDouble(real1Str);
  21. double imaginary1 = Double.parseDouble(imaginary1Str);
  22. double real2 = Double.parseDouble(real2Str);
  23. double imaginary2 = Double.parseDouble(imaginary2Str);
  24. Complex complex1 = new Complex(real1, imaginary1);
  25. Complex complex2 = new Complex(real2, imaginary2);
  26. Complex result;
  27. switch (operator) {
  28. case "+":
  29. result = complex1.add(complex2);
  30. break;
  31. case "-":
  32. result = complex1.subtract(complex2);
  33. break;
  34. case "*":
  35. result = complex1.multiply(complex2);
  36. break;
  37. case "/":
  38. try {
  39. result = complex1.divide(complex2);
  40. } catch (ArithmeticException e) {
  41. request.setAttribute("error", e.getMessage());
  42. request.getRequestDispatcher("/complex.jsp").forward(request, response);
  43. return;
  44. }
  45. break;
  46. default:
  47. throw new IllegalArgumentException("无效的操作!");
  48. }
  49. request.setAttribute("result", result);
  50. request.getRequestDispatcher("/result.jsp").forward(request, response);
  51. }
  52. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  53. this.doPost(request,response);
  54. }
  55. }

JSP:

  • 输入页面:

    <%—
    Created by IntelliJ IDEA.
    User: CaptainDong
    Date: 2023/5/31
    Time: 10:42
    To change this template use File | Settings | File Templates.
    —%>
    <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
    <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
    <!DOCTYPE html>




    复数计算器


    复数计算器






    + i





    + i










    结果如下:


    ${result.real} + ${result.imaginary}i





    错误:


    ${error}




  • 结果展示:

    <%@ page import=”com.dong.demo1.Complex” %>
    <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
    <%—
    Created by IntelliJ IDEA.
    User: CaptainDong
    Date: 2023/5/31
    Time: 11:07
    To change this template use File | Settings | File Templates.
    —%>
    <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>



    运算结果


    结果如下:



    <%
    Complex result= (Complex) request.getAttribute(“result”);
    String s1=result.getReal()+” “+”+”+”(“+result.getImaginary()+” “+”i”+”)”;
    %>
    <%=s1%>




    结果如下:


    ${result.real} + ${result.imaginary}i





    错误信息:


    ${error}




发表评论

表情:
评论列表 (有 0 条评论,159人围观)

还没有评论,来说两句吧...

相关阅读