jsp用while循环和for循环编写输出00008

<%@ 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>
<body>

<% 
    String str="8";
    for(int i=0;i<5;i++){
        str="0"+str;
    }
    out.write(str);
%>
    <% 
    int j=0;
    String str1="8";
    while(j<5){
        str1="0"+str1;
        j++;
    }
    out.write(str1);
%>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘 要 随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统 关键词:局域网 聊天 socket java 聊天系统各功能模块 (1)服务器程序模块 服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为9527,然后无限循环调用accept()方法接受客户程序的连接。 服务器线程源码: package qq.server; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.*; import qq.dao.hibernate.IServiceDao; import qq.entity.*; public class ServerController { private User user; private Socket s; private IServiceDao dao; private ObjectInputStream ois; private ObjectOutputStream oos; private OnlineUser onlineUser; www.bylw120.com public ServerController(Socket s) { super(); dao=ServerMainClass.userDao; this.s = s; } public void handle() throws Exception { ois=new ObjectInputStream(s.getInputStream()); oos=new ObjectOutputStream(s.getOutputStream()); onlineUser=new OnlineUser(ois,oos); while(true){ Request req=(Request)ois.readObject(); ois.read(); RequestType type=req.getType(); if(type.equals(RequestType.exit)){ exitHandle(); break; }else if(type.equals(RequestType.login)){ loginHandle(req); }else if(type.equals(RequestType.register)){ registerHandle(); }else if(type.equals(RequestType.offline)){ offlineHandle(); break; }else if(type.equals(RequestType.changeInformation)){ changeInformationHandle(); }else if(type.equals(RequestType.modifypasswd)){ modifypasswdHandle(req); }
以下是循环双链表类CHDoublelyLinkedList的实现: ```java public class CHDoublelyLinkedList<T> implements LList<T> { private Node<T> head; // 头结点 private int size; // 链表长度 // 内部节点类 private static class Node<T> { T data; // 数据 Node<T> prev; // 前驱节点 Node<T> next; // 后继节点 Node(T data) { this.data = data; } } // 构造方法,创建一个空链表 public CHDoublelyLinkedList() { head = new Node<>(null); head.prev = head.next = head; size = 0; } // 获取链表长度 @Override public int size() { return size; } // 判断链表是否为空 @Override public boolean isEmpty() { return size == 0; } // 获取第index个元素 @Override public T get(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } Node<T> p; if (index < size / 2) { // 从前往后查找 p = head.next; for (int i = 0; i < index; i++) { p = p.next; } } else { // 从后往前查找 p = head.prev; for (int i = size - 1; i > index; i--) { p = p.prev; } } return p.data; } // 设置第index个元素为data @Override public void set(int index, T data) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } Node<T> p; if (index < size / 2) { // 从前往后查找 p = head.next; for (int i = 0; i < index; i++) { p = p.next; } } else { // 从后往前查找 p = head.prev; for (int i = size - 1; i > index; i--) { p = p.prev; } } p.data = data; } // 在第index个位置插入元素data @Override public void insert(int index, T data) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } Node<T> p; if (index < size / 2) { // 从前往后查找 p = head.next; for (int i = 0; i < index; i++) { p = p.next; } } else { // 从后往前查找 p = head.prev; for (int i = size; i > index; i--) { p = p.prev; } } Node<T> newNode = new Node<>(data); newNode.prev = p.prev; newNode.next = p; p.prev.next = newNode; p.prev = newNode; size++; } // 删除第index个元素 @Override public void delete(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } Node<T> p; if (index < size / 2) { // 从前往后查找 p = head.next; for (int i = 0; i < index; i++) { p = p.next; } } else { // 从后往前查找 p = head.prev; for (int i = size - 1; i > index; i--) { p = p.prev; } } p.prev.next = p.next; p.next.prev = p.prev; size--; } } ``` 循环双链表类CHDoublelyLinkedList实现了LList接口中的方法,包括获取链表长度、判断链表是否为空、获取第index个元素、设置第index个元素为data、在第index个位置插入元素data和删除第index个元素。其中,get、set、insert和delete方法的时间复杂度为O(n),n为链表长度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值