会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133651个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2492楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2494楼

相关代码:Request类

package com.bjsxt.server;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Request {//请求
	private InputStream is;//输入流
	private String requestInfo;//请求字符串,请求方式,请求路径,参数,协议,协议版本,请求正文
	private String method;//请求方式
	private String url;//请求的url
	//输入框name为key,值为value
	/**
	 * key:username value:bjsxt
	 * key:pwd		value:123
	 * key:hobby 	value:    read,ball
	 */
	private Map<String,List<String>> parametermapValues;//参数 
	private static final String CRLF="\r\n";//换行
	private static final String BLANK=" ";//空格
	//构造方法,初始化属性
	public Request() {
		parametermapValues=new HashMap<String,List<String>>();
		method="";
		url="";
		requestInfo="";
	}
	public Request(InputStream is) {
		this();
		this.is=is;
		try {
			byte[]buf=new byte[20480];
			int len=this.is.read(buf);
			requestInfo=new String(buf,0,len);
		} catch (IOException e) {
			return;
		}	
		this.parseRequestInfo();
	}//分解请求信息的方法
	/**请求方式
	 * 请求路径
	 * 请求参数
	 * 
	 */
	private void parseRequestInfo() {
		String paraString="";//用于存储请求参数
		//获取请求参数的第一行
		String firstLine = requestInfo.substring(0, requestInfo.indexOf(CRLF)).trim();
		//分解出请求方式
		int index = firstLine.indexOf("/");
		this.method=firstLine.substring(0, index).trim();
		//分解url,可能包含参数(get),也可能不包含参数(post)
		String urlString = firstLine.substring(index,firstLine.indexOf("HTTP/") ).trim();
		if ("get".equalsIgnoreCase(this.method)) {
			if (urlString.contains("?")) {
				String[] urlArray=urlString.split("\\?");
				this.url=urlArray[0];
				paraString=urlArray[1];
				
			}else {
				this.url=urlString;
			}
		}else {//不包含请求参数
			this.url=urlString;
			paraString=requestInfo.substring(requestInfo.lastIndexOf(CRLF)).trim();						
		}
		if (paraString.equals("")) {
			return;
		}
		//请求参数
		System.out.println(paraString);
	}//用于测试
	public void show() {
		System.out.println(this.url);
		System.out.println(this.method);
	}
}


Server类

package com.bjsxt.server;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {//服务器,用于启动和停止服务
	private ServerSocket server;
	public static void main(String[] args) {
		Server server=new Server();
		server.start();
	}
	public void start() {
		this.start(8888);
	}
	public void start(int port) {
		try {
			server=new ServerSocket(port);
			this.receive();//请求接收信息的方法
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	private void receive() {
		//监听
		try {
			Socket client=server.accept();
			//获取用户请求
			/*InputStream is=client.getInputStream();
			byte[] buf=new byte[20480];
			int len=is.read(buf);			
			System.out.println(new String(buf,0,len));*/
			//封装请求信息
			Request req=new Request(client.getInputStream());
			req.show();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2497楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2498楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2500楼

一、问题:判断一个字符串的对称性。

老师,为啥我输出的会是false,感觉逻辑没有问题,而且代码跟老师讲课一样,但为什么输出的不是true。

二、代码

package com.bjsxt;

import java.util.Stack;

public class StackTest {
    public static void main(String[] args) {
        System.out.println("-------判断字符串的对称性---------");
        StackTest stackTest = new StackTest();
        stackTest.symmetry();
    }
    //判断字符串的对成型
    public void symmetry(){
        String str="...{.....[....(....)...]....}..(....)..[...]...";
        Stack<String> stack = new Stack<>();
        boolean flag = true;//假设是匹配的
        for (int i=0;i<str.length();i++){
            char c = str.charAt(i); //拆分字符,把字符拿出来
            if (c=='{'){
                stack.push("}");
            }
            if (c=='['){
                stack.push("]");
            }
            if (c=='('){
                stack.push(")");
            }
            if (c == ')'|| c == ']'|| c == '}'){
                //修正处理
                if (stack.empty()){
                    flag = false;
                    break;
                }
                String x = stack.pop();
                //修正处理
                if (x.charAt(0) != c){
                    flag = false;
                    break;
                }
            }
        }
        if (!stack.empty()){
            flag = false;
        }
        System.out.println(flag);
    }
}

三、运行效果图

图片.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2501楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/数据结构 2502楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2504楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637