196算法之谜在 JSP 中使用内置对象 request 获取 form 表单的文本框 text 提交的数据。

(1)编写 inputNumber . jsp ,该页面提供一个 form 表单,该 form 表单提供一个文本框 text ,用于用户输入一个正整数,用户在 form 表单中输入的数字,单击 submit 提交键将正整数提交给 huiwenNumber . jsp 页面。
(2) huiwenNumber . jsp 获取 inputNumber . jsp 提交的正整数,然后 huiwenNumber . jsp 寻找回文数,也称196算法(一个数正读反读都一样,就把它称为"回文数"),对于正整数 number .196算法如下:
① number 加上把它反过来写之后得到的数 reverseNumber 得到 resultNumber ,如果 resultNumber 是回文数,进行③,否则②。
②对新得到的数 resultNumber 重复上述①操作。
③结束。
例如对于59,59+95=154,154+451=605,605+506=1111。3步得到回文数1111。数字196是一个相当引人注目的例外,数学家们已经用计算机算到了3亿多位数,都没有产生回文数。从196出发,能否得到回文数?196究竟特殊在哪儿?至今仍是个谜。
(3)在 Tomcat 服务器的 webapps 目录下(比如, D :\ apache - tomcat -9.0.26\ webapps )新建名字是ch4_ practice _ one 的 Web 服务目录。把 JSP 页面都保存到ch4_ practice _ one 目录中。
(4)用浏览器访问 JSP 页面 inputNumber . jsp

inputNumber.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<style>

#tomStyle{

font-family:宋体;font-size:36;color:blue

}

</style>

<body id=tomStyle bgcolor=#ffccff>

<form action="huiwenNumber.jsp" method=post name=from>

输入一个正整数:<br>

<input type=text name="number" id=tomStyle size=16 value=520>

<br><input type="submit" id=tomStyle value="提交"/>

</form>

</body>

</html>

huiwenNumber.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<%@ page import="java.math.BigInteger" %>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body gbcolor=cyan>

<p style="font-family:宋体;font-size:26;color:black">

<%!

public static String reverse(String s){

StringBuffer buffer=new StringBuffer(s);

StringBuffer reverseBuffer=buffer.reverse();

return reverseBuffer.toString();

}

%>

<%

String regex="[1-9][0-9]*";

String startNumber=request.getParameter("number");

if(startNumber==null||startNumber.length()==0){

startNumber="520";

}

if(!startNumber.matches(regex)){

response.sendRedirect("inputNumber.jsp");

return;

}

long step=1;

BigInteger number=new BigInteger(startNumber);

BigInteger reverseNumber=new BigInteger(reverse(number.toString()));

BigInteger resultNumber=number.add(reverseNumber);

out.print("<br>"+number+"+"+reverseNumber+"="+resultNumber);

BigInteger p=new BigInteger(reverse(resultNumber.toString()));

while(!resultNumber.equals(p)){

number=new BigInteger(resultNumber.toString());

reverseNumber=new BigInteger(reverse(number.toString()));

resultNumber=number.add(reverseNumber);

p=new BigInteger(reverse(resultNumber.toString()));

out.print("<br>"+number+"+"+reverseNumber+"="+resultNumber);

step++;

}

out.print("<br>"+step+"步得到回文数:"+resultNumber);

%>

</p>

</body>

</html>

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_69595107

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值