2 - 6 自由编程

来源:2-6 自由编程

jia_蛙

2019-11-07 10:37:02

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>计算累加和</title>
</head>
<body>
	<form action="/Servlet_advanced/count/add" method="get">
		<input type="text" name="number" placeholder="请输入100以内的数字">
		<input type="submit" value="求累加和">
	</form>
</body>
</html>
package com.zhou.servlet.add;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class addNumber
 */
@WebServlet("/count/add")
public class addNumber extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置响应格式
		response.setContentType("text/html;charset=utf-8");
		//使用getParamenter()根据参数名称获取参数值 也就是获取到用户输入的值
		String str1 =request.getParameter("number");
		//初始化一个int整型变量用来存储累加值
		int number = 0;
		//对用户的输入进行累加
		try {
			int num = Integer.parseInt(str1);
			if(num <=100 && num >= 0) {
				for(int i=0;i<=num;i++) {
					number +=i;	
				}
			}else {
				//当用户输入的数字大小不符合时直接使number等于符数
				number = -1;
			}
			
			//使用setAttribute设置自定义属性
			request.setAttribute("userInput", str1);
			request.setAttribute("number",number);
			
			//因为我们要在一个servlet之间进行数据传递,为了不让数据丢失这里不能使用响应重定向
			request.getRequestDispatcher("/count/result").forward(request, response);
		} catch (NumberFormatException e) {
			response.getWriter().println("您的输入不符合规则");
			e.printStackTrace();
		}	
	}
}
package com.zhou.servlet.add;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/count/result")
public class resultNumber extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public resultNumber() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置响应格式
		response.setContentType("text/html;charset=utf-8");
		//使用getAttribute获取自定义属性
		int number = (Integer)request.getAttribute("number");
		String str = (String)request.getAttribute("userInput");
		//这里需要做个判断,判断结果是否为-1,-1说明用户输入使数字但是范围不对
		if(number ==  -1) {
			response.getWriter().println("输入的数字不在可计算范围");
		}else {
			response.getWriter().println(str + "的累加和为:" + number);
		}
	}

}
老师麻烦看一下 我的代码有没有地方修改的, 我还有一个问题,就是我记得之前我们在哪里讲过,
有一个方法可以判断String类型能否转换成int类型。好像前面没多久,但去翻就是翻不到,记不起来了


写回答

1回答

好帮手慕柯南

2019-11-07

同学你好!

  1. 同学的代码完成的不错,但是有一个小细节要注意一下,类名首字母要大写,同学你的首字母都小写了

  2. 同学所说的判断这个字符串是否是数字,是指下面这个吗?

    http://img.mukewang.com/climg/5dc3c58e092a1c7506810394.jpg

    这里在计算器的案例中有讲到,但是是js中的函数,不是java中的哦,具体的链接是:

    https://class.imooc.com/lesson/1047#mid=25109 

  3. java中同学可以自己封装一个

    http://img.mukewang.com/climg/5dc3c78c09b2fe9507920319.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

1

0 学习 · 9666 问题

查看课程

相似问题