会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132445个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 2223楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2224楼

老师,为什么我的情况是返回一个文件

package com.bjsxt.server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;


public class Server2 {
	public static void main(String[] args) {
		//(1)创建ServerSocket对象
		String CRLF="\r\n";//换行
		String BLANK=" ";
		ServerSocket server=null;
		//(2)监听是否有客户端发送请求
		Socket client=null;
		InputStream is=null;
		BufferedReader br=null;
		try {
			server = new ServerSocket(9999);
			client = server.accept();
			is=client.getInputStream();
			byte [] buf=new byte[20480];
			int len=is.read(buf);
			System.out.println(new String(buf,0,len));
			//对web浏览器的请求作出响应
			StringBuilder sb=new StringBuilder();
			StringBuilder sbContent=new StringBuilder();
			sbContent.append("<html><head><title>响应结果</title></head>");
			sbContent.append("<body>登陆成功</body></html>");
			sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
			sb.append(CRLF);
			sb.append("Content-Type: test/html;charset=utf-8");
			sb.append(CRLF);
			sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF) ;
			sb.append(CRLF);
			sb.append(sbContent);
			
			BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
			bw.write(sb.toString());
			bw.flush();
			bw.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//(6)关闭流
			IOClose.closeAll(br,client,server);
		}
		
	}
}

image.png

如上图所示,返回了左下角的下载文件


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

老师,这个异常要怎么处理?

image.png

视频当中2:51继承这个类是干什么的?我照着视频上写是报错的。

image.png

image.png


package XmlProject;

import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;

public class TestSAXParse {
    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
        //1)   创建SAXParserFactory的对象
        SAXParserFactory spf=SAXParserFactory.newInstance();
        //2)   创建SAXParser对象 (解析器)
        SAXParser parser=spf.newSAXParser();
        //3)   创建一个DefaultHandler的子类
        BookDeaultHandler bdh=new BookDeaultHandler();
        //4)   调用parse方法
        parser.parse("D:\\Users\\0091274\\Desktop\\books.xml", bdh);
    }
}
package XmlProject;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class BookDeaultHandler extends DefaultHandler {
    //重写第一个方法
    /**解析xml文档开始时调用*/
    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.startDocument();
        System.out.println("解析xml文档开始");
    }
    /*解析xml文档结束时调用*/
    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
        System.out.println("解析xml文档结束");
    }
    /**解析xml文档中的节点时调用*/
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        // TODO Auto-generated method stub
        super.startElement(uri, localName, qName, attributes);
        //System.out.println("解析xml文档中的节点时调用");
        /**判断,如果是book节点,获取节点的属性和属性值*/
        if("book".equals(qName)){
            //获取所有的属性
            int count=attributes.getLength();//属性的个数
            //循环获取每个属性
            for(int i=0;i<count;i++){
                String attName=attributes.getQName(i);//属性名称
                String attValue=attributes.getValue(i);//属性值
                System.out.println("属性名称:"+attName+"\t属性值为:"+attValue);
            }
        }else if(!"books".equals(qName)&&!"book".equals(qName)){
            System.out.print("节点的名称:"+qName+"\t");
        }

    }
    /**解析xml文档中的节点结束调用*/
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        // TODO Auto-generated method stub
        super.endElement(uri, localName, qName);
        //System.out.println("解析xml文档中的节点结束调用");
    }
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        // TODO Auto-generated method stub
        super.characters(ch, start, length);
        String value=new String(ch,start,length);
        if(!"".equals(value.trim())){
            System.out.println(value);
        }

    }
}
<?xml version="1.0" encoding="UTF-8"?>

<books>
    <book id="1001">
        <name>java入门到精通</name>
        <author>张小三</author>
        <price>95.6</price>
    </book>

    <book id="1002">
        <name>MySql从删库到跑路</name>
        <author>张三</author>
        <price>85.6</price>
    </book>
</books>


JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2226楼

public class Mysinglylinedlist<E> implements My_List<E>{


    /**
     * 定义单向链表中的节点对象
     */
    class Node<E>{
        private E item;//存储元素
        private Node next;//存储下一个节点对象的地址
        Node(E item,Node next){
            this.item=item;
            this.next=next;
        }
    }
    private Node hand;//存放链表中的头节点
    private int size;//记录元素个数


    /**
     * 向链表中添加元素
     * @param element :添加的元素
     */
    @Override
    public void add(E element) {
        //创建节点
        Node<E>node=new Node<>(element,null);
        //找到尾节点
         Node tail = gettail();
        //挂接
        if(tail==null)
            this.hand=node;
        else
            tail.next=node;

        //记录元素个数
        this.size++;


    }

    private Node gettail(){
    //头节点是否存在
        if(this.hand==null){
            return null;
        }
        //查找尾节点
        Node node = this.hand;
        while (true){
            if (node==null) break;
            node = node.next;     //移动指针指向下一个节点
        }
        return node;
    }


    /**
     * 获取链表中元素
     * @param index :位置
     * @return
     */
    @Override
    public E get(int index) {
        //效验index的合法性
        this.checkindex(index);
        //根据位置获取指定节点
        Node<E> node = this.getnode(index);
        //将该节点元素返回
        return node.item;
    }


    /**
     *判断index的合法性
     */

    private void checkindex(int index){
        if (!(index>=0&&index<this.size)){
            throw new IndexOutOfBoundsException("Index"+index+"size"+this.size);
        }
    }


    /**
    * 根据位置获取节点
    */
    private Node getnode(int index){
        Node<E> node =this.hand;
        for (int i = 0;i<index;i++){
            node=node.next;
        }
        return node;
    }


    /**
     * 获取链表大小
     * @return
     */
    @Override
    public int size() {
        return this.size;
    }


    /**
     * 根于元素位置删除元素
     * @param index :元素位置
     * @return
     */
    @Override
    public E remove(int index) {
        //判断位置合法性
        this.checkindex(index);
        //根据位置找到指定节点
        Node<E>node=this.getnode(index);
        //通过节点对象获取该节点对象中的元素
        E item = node.item;
        //将该节点对象从单向链表中移除
        //判断删除的节点是否为头节点
        if (this.hand==node){
            this.hand=node.next;
        }else {
            Node<E> temp = this.hand;
            for (int i = 0;i<index-1;i++){
                temp=temp.next;
            }
            temp.next=node.next;
        }
        node.next=null;
        //元素个数记录
        this.size--;
        //将该元素返回
        return item;
    }

    public static void main(String[] args) {
        Mysinglylinedlist<String>mysinglylinedlist=new Mysinglylinedlist<>();
        mysinglylinedlist.add("a");
        mysinglylinedlist.add("b");
        mysinglylinedlist.add("c");
        mysinglylinedlist.add("d");
        System.out.println(mysinglylinedlist.size);
//        System.out.println(mysinglylinedlist.remove(1));
        for (int i = 0 ; i < mysinglylinedlist.size;i++){
            System.out.println(mysinglylinedlist.get(i) );
        }
    }

image.png

为什么会报错啊  

JAVA 全系列/第二阶段:JAVA 基础深化和提高/数据结构 2228楼

老师,通过比较器实现比较规则这个显示下面这一行

Map<Student,String> treeMap = new TreeMap<>(new StudentComparator());

出了问题,能帮我看一下是什么问题吗?

package 双例集合;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

/**
 * 元素自身实现比较规则   TreeMap可以对键进行排序
 */
public class TreeMapTest {
    public static void main(String[] args) {
        //实例化TreeMap
        Map<Users,String> map = new TreeMap<>();
        //创建User对象
        Users u1 = new Users("liu",18);
        Users u2 = new Users("admin",20);
        Users u3 = new Users("sxt",20);
        map.put(u1,"liu");
        map.put(u2,"admin");
        map.put(u3,"sxt");
        Set<Users> keys = map.keySet();
        for (Users key:keys){
            System.out.println(key+" "+map.get(key));
        }
        System.out.println("-----通过比较器实现比较规则-------");
        //java.lang.ClassCastException: 双例集合.Student cannot be cast to java.lang.Comparable
        //创建StudentComparator对象,然后交给TreeMap的构造方法中
        Map<Student,String> treeMap = new TreeMap<>(new StudentComparator());
        Student s1 = new Student("liu",18);
        Student s2 = new Student("admin",20);
        Student s3 = new Student("sxt",20);
        treeMap.put(s1,"liu");
        treeMap.put(s2,"admin");
        treeMap.put(s3,"sxt");
        Set<Student> keys2 = treeMap.keySet();
        for (Student key:keys2){
            System.out.println(key+" "+treeMap.get(key));
        }

    }
}

blob.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2230楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/异常机制 2231楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2232楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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