会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132832个问题

调用父类的方法失败

源码:

public class Test{
    public static void main(String[] args) {
        CarFunction newCar = new Car();
        //newCar.move();
        FlyCar flyCar = new FlyCar(newCar);
        //flyCar.fly();
        AICar aiCar = new AICar(flyCar);
        aiCar.AI();
    }
}

//定义接口
interface CarFunction{
    void move();    //抽象方法:移动方式
}

//具体的构建角色Car类
class Car implements CarFunction{
    public void move(){
        System.out.println("在陆上行驶的汽车");
    }
}

//装饰器角色
class SuperCar implements CarFunction{
    private CarFunction newCar;
    SuperCar(CarFunction newCar){
        this.newCar = newCar;
    }

    @Override
    public void move() {
        newCar.move();      //调用真实角色的行驶的方法
    }
}

//
class FlyCar extends SuperCar{
    public FlyCar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();        //调用父类的行驶方法
        this.fly();
    }

    public void fly(){
        System.out.println("拥有飞行功能的汽车");
    }
}

class AICar extends SuperCar{
    AICar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();
        this.AI();
    }

    public void AI(){
        System.out.println("拥有人工智能自动驾驶的汽车");
    }
}

class WaterCar extends SuperCar{
    WaterCar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();
        this.water();
    }

    void water(){
        System.out.println("可以水上行驶的汽车");
    }
}

运行结果:


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

package cn.io;

import java.io.*;

/**
 * 测试复制文件夹
 */
public class TestCopyFile {
    public static void main(String[] args) {
        //File srcFile = new File("D:\\答辩准备.docx");
        //File targetFile = new File("E:\\答辩准备.docx");
        //先复制一个文件
        //copyFile(srcFile,targetFile);
        //复制正个目录
        File srcDir = new File("E:\\百战程序员");
        File targetDir = new File("D:\\百战程序员");
        copyDir(srcDir,targetDir);
    }

    //复制整个目录
    public static void copyDir(File srcDir,File targetDir){
        //(1)如果目标目录不存在,则需要使用File类的方法进行创建目录
        if (!targetDir.exists()){
            targetDir.mkdir();
        }
        //(2)获取指定目录下的所有File对象
        File[] files = srcDir.listFiles();

        //(3)遍历分解指定目录下的文件
        for (File file :files){
            if (file.isFile()){
                /**
                 * 调用赋值文件方法
                 * 1.srcDir--->E:\\API   拼接    E:\\Api\\XXXXX.xxx文件
                 * 2.targetDir--->D:\\API   拼接    E:\\Api\\XXXXX.xxx文件
                 */
                copyFile(new File(srcDir+"\\"+file.getName()),new File(targetDir+"\\"+file.getName()));

            }else {
                copyDir(new File(srcDir+"\\"+file.getName()),new File(targetDir+"\\"+file.getName()));
            }
        }

    }

    /**
     * 复制一个文件
     * @param srcFile
     * @param targetFile
     */
    public static void copyFile(File srcFile, File targetFile){
        //(1)提高读取效率,从数据源
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(new FileInputStream(srcFile));
            //(2)提高写入效率,写到目的地
            bos = new BufferedOutputStream(new FileOutputStream(targetFile));
            //(3)边读边写
            byte[] buf = new byte[1024];        //中转站
            int len = 0 ;
            while((len=bis.read())!=-1){
                bos.write(buf,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //(4)关闭
            try {
                if (bos!=null){
                    bos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (bis!=null){
                    bis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}

老师,我执行这段代码,没有报错,但是硬盘差点爆了,硬盘快满了,程序还没有停,是哪里出问题了吗?

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

package com.bjsxt.mycollection.myarraylist;

import java.util.Arrays;

/**
 * 写一个乞丐版ArrayList,实现add,remove,get
 */

public class myArrayList {
    private final int DEFAULT_CAPACITY = 10;//定义默认初始容量为10
    private final Object[] DEFAULT_EMPTY_OBJ = {};//定义一个长度为0的Object类型数组
    public Object[] defaultObj = {};//空数组
    private int size;//数组大小

    //(1)无参构造方法
    public myArrayList() {
        this.defaultObj = DEFAULT_EMPTY_OBJ;
    }
    //(2)带参构造器
    public myArrayList(int Capacity) {//初始长度大于0就创建长度为初始化数值的对象数组
        if(Capacity>0) {
            this.defaultObj = new Object[Capacity];
        }
    }
    //(3)检测空间容量是否够用
    public void ensureCapacityInternal(int minCapacity) {
        if(defaultObj==DEFAULT_EMPTY_OBJ) {
            minCapacity = Math.max(DEFAULT_CAPACITY,minCapacity);
        }
        if(minCapacity>defaultObj.length) {
            grow(minCapacity);
        }
    }
    //(4)扩容grow方法
    public void grow(int minCapacity) {
        int oldCapacity = defaultObj.length;
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        if(newCapacity - minCapacity<0) {
            newCapacity = minCapacity;
            defaultObj = Arrays.copyOf(defaultObj,newCapacity);
        }
    }
    //(5)add方法
    public boolean add(Object obj) {
        ensureCapacityInternal(size+1);
        defaultObj[size++] = obj;
        return true;
    }
    public void add(int index,Object obj) {//根据索引添加
        System.arraycopy(defaultObj,index,defaultObj,index+1,size-index);
        defaultObj[index] = obj;
        size++;
    }
    //(6)remove方法
    public String remove(int index) {
        String oldValues = (String)defaultObj[index];
        int numMove = index-1;//拷贝的元素个数
        if(numMove>0) {
            System.arraycopy(defaultObj,index+1,defaultObj,index,numMove);//将后一位拷贝到前一位
            defaultObj[--size] = null;//最后一个位置设为空
        }
        return oldValues;
    }
    //(7)get方法
    public Object get(int index) {
        return defaultObj[index];
    }
    public int size(){
        return size;
    }
    //输出方法
    public void print() {
        for(Object obj:defaultObj) {
            System.out.print(obj+"\t");
        }
    }

    public static void main(String[] args) {
        myArrayList list = new myArrayList();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("1");
        list.add("2");
        list.add("3");
        System.out.println("****add()方法****");
        list.print();
        System.out.println("集合中元素个数:"+list.size);
        list.remove(2);
        System.out.println("****remove()方法****");
        list.print();
        System.out.println("集合中元素个数:"+list.size);
        System.out.println("****get()方法****");
        System.out.println(list.get(1));
    }
}

老师,作业要求写一个自己的ArrayList,测试的时候只要添加超过10个就报错,帮忙看一下是哪里出了问题。

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2795楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2796楼

老师,我想问一下为什么我网页上登录了,但是eclipse上没有反应是怎么回事?刚开始有时候还是会正常运行,到后面就一点反应都没了,我也没去动其它什么地方,有点懵。

image.png

image.png

这是eclipse上面的代码:

package cn.zl.server;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import cn.zl.client.CloseAll;

public class Server3 {
	public static void main(String[] args) {
		//创建ServerSocket对象
		ServerSocket server = null;
		InputStream is = null;
		Socket s = null;
	try {
		server = new ServerSocket(8888);
		//监听是否有客户端发送请求并获取Socket对象
		s = server.accept();
		is = s.getInputStream();
		byte[] buf = new byte[20480];
		int len = is.read(buf);
		System.out.println(new String(buf,0,len));
		
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
		//关闭流
		CloseAll.closeAll(is,s,server);
		}
	}
}

下面是记事本上面的代码:

<html>
	<head>
		<title>王者荣耀</title>
	</head>
	<body>
		<h1>欢迎来到旺仔农药</h1>
		<form	action="http://localhost:8888/index.html" method="get">
			<p>账号:<input type="text" id="uname" name="username"/></p>
			<p>密码:<input type="password" id="pwd" name="password"/></p>
			<p><input type="submit" value="登录"/></p>
		</form>
	</body>
</html>


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

老师好,我运行了之后客户端收到的信息是乱码,这个怎么解决呢?

客户端代码:

package com.bjsxt.client;


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

public class Test {
    public static void main(String[] args) throws IOException {
        //(1)创建Socket对象
        Socket client = new Socket("127.0.0.1", 9999);
        //(2)获取输出流
        OutputStream os = client.getOutputStream();
        os.write('a');
        //(3)获取输入流
        InputStream is = client.getInputStream();
        byte [] buf = new byte[1024];
        int len=0;//读到的字节的个数
        while ((len=is.read())!= -1){
            System.out.println(new String(buf,0,len));
        }
        //(4)关闭流
        if (is!=null){
            is.close();
        }
        if(os!=null){
            os.close();
        }
        if (client!=null){
            client.close();
        }
    }
}

服务端代码:

package com.bjsxt.server;

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

public class Test {
    public static void main(String[] args) throws IOException {
        System.out.println("----------服务器端已启动-----------");
        //(1)创建ServerSocket对象

        ServerSocket server = new ServerSocket(9999);

        //(2)监听是否有客户端来请求连接
        Socket client = server.accept();
        //(3)获取输入流
        InputStream is = client.getInputStream();
        System.out.println((char) is.read());

        //(4)获取输出流
        OutputStream os = client.getOutputStream();
        os.write("收到了!".getBytes());
        //(5)关闭流,关闭Socket
        if (os!=null){
            os.close();
        }
        if (is!=null){
            is.close();
        }
        if (client!=null){
            client.close();
        }
    }
}

运行结果:

image.png

image.png

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

课程分类

百战程序员微信公众号

百战程序员微信小程序

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