会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132419个问题
JAVA 全系列/第一阶段:JAVA 快速入门/IDEA的使用和第一个java项目 33046楼

'''
新增方法:
    爆炸效果的实现
'''
#导入pygame模块
import pygame,time,random
# #pygame官方网站:www.pygame.org
SCREEN_WIDTH=700
SCREEN_HEIGHT=500
BG_COLOR=pygame.Color(0,0,0)
TEXT_COLOR=pygame.Color(255,0,0)
class MianGame():
#主类
    window=None
    my_tank=None
    #定义存储敌方坦克的列表
    enemyTankList=[]
    #初始化敌方坦克的数量
    enemyTankCount=5
    #存储我方坦克的列表
    myBulletList=[]
    #存储敌方子弹的列表
    EnemyBulletList=[]
    #爆炸效果列表
    ExplodeList=[]
    def __init__(self):
        pass

     #开始游戏

    def Startgame(self):
        #加载主窗口
        pygame.display.init()
        MianGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
        #初始化我方坦克
        MianGame.my_tank=Tank(350,250)
        #初始化敌方坦克,并将敌方坦克添加到列表中
        self.creatEnemyTank()
        #设置窗口的标题
        pygame.display.set_caption('坦克大战1.03')


        #设置窗口的填充色
        while True:
            #使用坦克变慢的方法
            time.sleep(0.02)
            #给窗口设置填充色
            MianGame.window.fill(BG_COLOR)
            #获取事件
            self.getEvent()
            MianGame.window.blit(self.getTextSurface('敌方坦克剩余数量%d'%len(MianGame.enemyTankList)),(10,10))
            #调用坦克显示的方法
            MianGame.my_tank.displayTank()
            #循环遍历敌方坦克列表,展示坦克
            self.blitEnemyTank()
            #循环遍历我方坦克的子弹
            self.blitmyBullet()
            # 调用渲染敌方子弹列表的一个方法
            self.blitEnemyBullet()
            #调用移动方法
            #如果坦克的开关是开启,才可以移动
            if not MianGame.my_tank.stop:
                  MianGame.my_tank.move()
                  #调用展示爆炸效果列表的方法
            self.displayExplodes()

            pygame.display.update()

            # 初始化敌方坦克,并将敌方坦克添加到列表中
    def creatEnemyTank(self):
        top=100
        #循环生成敌方坦克
        for i in range(MianGame.enemyTankCount):
            left=random.randint(0,600)
            speed=random.randint(1,4)
            enemy=EnemyTank(left,top,speed)
            MianGame.enemyTankList.append(enemy)

            # 循环遍历敌方坦克列表,展示坦克
    def blitEnemyTank(self):
        for enemyTank in MianGame.enemyTankList:
           if enemyTank.live:
               enemyTank.move()
               enemyTank.randMove()
                #调用敌方坦克射击的方法
               enemyBullet=enemyTank.shot()
                #将敌方子弹存储到子弹列表中
               MianGame.EnemyBulletList.append(enemyTank)
                #如果子弹为NoneType时,不加入到子弹列表
               if enemyBullet:
                    MianGame.EnemyBulletList.append(enemyBullet)
               else:
                    MianGame.enemyTankList.remove(enemyTank)




            # 将敌方子弹加入到窗口中
    def blitEnemyBullet(self):
        for enemyBullet in MianGame.EnemyBulletList:
        # 如果子弹还活着,绘制出来,否则,直接从列表中移除该子弹
            if enemyBullet.live:
                enemyBullet.displayBullet()
                enemyBullet.MoveBullet()
            else:
                MianGame.myBulletList.remove(enemyBullet)
            #循环遍历我方坦克子弹存储列表
        #新增方法:展示爆炸效果列表
    def displayExplodes(self):
        for explode in MianGame.ExplodeList:
            if explode.live:
                explode.displayExlpode()
            else:
                MianGame.ExplodeList.remove(explode)
    def blitmyBullet(self):
        for myBullet in MianGame.myBulletList:
            #如果子弹还活着,绘制出来,否则,直接从列表中移除该子弹
            if myBullet.live:
                myBullet.displayBullet()
                myBullet.MoveBullet()
                myBullet.hitEnemyTank()
            else:
                MianGame.myBulletList.remove(myBullet)

        # 结束游戏
    def Endgame(self):
       print('蟹蟹使用')
       exit()
        #左上角文字的绘制
    def getTextSurface(self,text):
        # 初始化字体模块
        pygame.font.init()
        #查看所有的字体
        #print(pygame.font.get_fonts())
        #获取字体font对象
        font=pygame.font.SysFont('kaiti',18)
        #绘制文字信息
        textSurface=font.render(text,True,TEXT_COLOR)
        return textSurface

        #获取所有事件
    def getEvent(self):
        eventlist=pygame.event.get()
        #遍历事件
        for event in eventlist:
            #判断按下的键是关闭还是键盘按下
            #如果按的是退出,关闭窗口
            if event.type==pygame.QUIT:
                self.Endgame()
            #如果是键盘的按下
            if event.type==pygame.KEYDOWN:
                #判断不同的键盘上、下、左、右
                if event.key == pygame.K_LEFT:
                    #切换方向
                    MianGame.my_tank.direction="L"
                    #修改坦克的开关状态
                    MianGame.my_tank.stop=False
                    #MianGame.my_tank.move()
                    print("向左移动")
                elif event.key == pygame.K_RIGHT:
                    # 切换方向
                    MianGame.my_tank.direction = "R"
                    # 修改坦克的开关状态
                    MianGame.my_tank.stop = False
                    #MianGame.my_tank.move()
                    print("向右移动")
                elif event.key == pygame.K_UP:
                    # 切换方向
                    MianGame.my_tank.direction = "U"
                    # 修改坦克的开关状态
                    MianGame.my_tank.stop = False
                    #MianGame.my_tank.move()
                    print("向上移动")
                elif event.key == pygame.K_DOWN:
                    # 切换方向
                    MianGame.my_tank.direction = "D"
                    # 修改坦克的开关状态
                    MianGame.my_tank.stop = False
                    #MianGame.my_tank.move()
                    print("向下移动")
                elif event.key == pygame.K_SPACE:
                    print('发射子弹')
                    if len(MianGame.myBulletList) < 3:
                        # 创建我方坦克发射的子弹
                        myBullet = Bullet(MianGame.my_tank)
                        MianGame.myBulletList.append(myBullet)
                    else:
                        print('子弹数量不足')
                    print("当前屏幕中的子弹数量为%d"%len(MianGame.myBulletList))
                    #松开方向键,坦克停止移动,修改坦克的移动状态
                    #判断松开的是上、下、左、右键坦克才停止移动
            elif event.type == pygame.KEYUP:
               if event.type == pygame.K_DOWN or event.type == pygame.K_LEFT or event.type == pygame.K_UP or event.type == pygame.K_RIGHT:
                   MianGame.my_tank.stop=True
class BaseItem(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)

 #坦克类
class Tank(BaseItem):   #Tank继承BaseItem类,这样就可以继承精灵类中的碰撞算法
    #添加距离左边left,距离上边top
    def __init__(self,left,top):
        #保存加载的图片
        self.images={'U':pygame.image.load('img/p1tankU.gif'),
                     'L': pygame.image.load('img/p1tankL.gif'),
                     'R': pygame.image.load('img/p1tankR.gif'),
                     'D': pygame.image.load('img/p1tankD.gif'),
                     }
        #方向
        self.direction='U'
        #根据当前图片的方向获取图片 surface
        self.image=self.images[self.direction]
        #根据图片获取区域
        self.rect=self.image.get_rect()
        #设置区域的left和top
        self.left=left
        self.top=top
        #速度 决定移动的快慢
        self.speed=5
        #坦克移动的开关
        self.stop=True
        # 子弹的状态,判断子弹是否活着
        self.live = True

    #移动
    def move(self):
       #判断坦克的方向进行移动
       if self.direction=="L":
           if self.rect.left>0:
            self.rect.left-=self.speed
       elif self.direction=="U":
           if self.rect.top>0:    #判断坦克的top值是否大于零,大于零则继续向上移动,否则不能
            self.rect.top-=self.speed
       elif self.direction=="D":
           if self.rect.top+self.rect.height<SCREEN_HEIGHT:  #判断top值加上坦克的高度知否小于窗口的高度
               self.rect.top+=self.speed
       elif self.direction=="R":
           if self.rect.left+self.rect.height<SCREEN_WIDTH:  #判断left值加上坦克的高度知否小于窗口的宽度
               self.rect.left+=self.speed
    #射击
    def shoot(self):
        pass
    #展示坦克的方法
    def displayTank(self):
        #获取展示的对象
       self.image=self.images[self.direction]
        #调用blit方法
       MianGame.window.blit(self.image,self.rect)
    #我方坦克类,继承的是坦克类
class MyTank(Tank):
    def __init__(self):
        pass

    #敌方坦克
class EnemyTank(Tank):
    def __init__(self,left,top,speed):

        #self.live=True
                #加载图片集
        self.images={'U':pygame.image.load('img/enemy1U.gif'),
                     'D': pygame.image.load('img/enemy1D.gif'),
                     'L': pygame.image.load('img/enemy1L.gif'),
                     'R': pygame.image.load('img/enemy1R.gif'),
                     }
        #方向,随机生成敌方坦克的方向
        self.direction=self.randDirection()
        #根据方向获取图片
        self.image=self.images[self.direction]
        #区域
        self.rect=self.image.get_rect()
        #对left和top值进行赋值
        self.rect.left=left
        self.rect.top=top
        #移动开关键
        self.flag=True #flag:标记、标识
        #速度
        self.speed=speed

        #新增加一个步数变量 step
        self.step=20


    # 随机生成敌方坦克的方向
    def randDirection(self):
            num = random.randint(1, 4)  # 随机生成1-4个数,代表不同的方向
            if num == 1:
                return 'U'
            elif num == 2:
                return 'D'
            elif num == 3:
                return 'L'
            elif num == 4:
                return 'R'
        #敌方坦克随机移动的方法
    def randMove(self):
        if self.step<=0:
            #修改方向
            self.direction=self.randDirection()
            #让步数复位,不然步数等于零时,坦克不会移动
            self.step=20
        else:
            self.move()
            #让步数递减
            self.step-=1
    def shot(self):
        num = random.randint(1,100)
        if num == 1:
            return Bullet(self)


    #子弹类
class Bullet(BaseItem):
    def __init__(self,tank):
       #加载图片集
       self.image = pygame.image.load('img/enemymissile.gif')
        #坦克的方向决定子弹的方向
       self.direction=tank.direction
        #获取区域
       self.rect=self.image.get_rect()
        #子弹的left和top值与方向有关
       if self.direction=='U':
            self.rect.left=tank.rect.left+tank.rect.width/2-self.rect.width/2
            self.rect.top=tank.rect.top-self.rect.height
       elif self.direction=='D':
            self.rect.left=tank.rect.left+tank.rect.width/2-self.rect.width/2
            self.rect.top=tank.rect.top+self.rect.height
       elif self.direction=='L':
            self.rect.left=tank.rect.left-tank.rect.width/2-self.rect.width/2
            self.rect.top=tank.rect.top+tank.rect.width/2-self.rect.width/2
       elif self.direction=='R':
            self.rect.left=tank.rect.left+tank.rect.width/2
            self.rect.top=tank.rect.top+tank.rect.width/2-self.rect.width/2

            #子弹的速度
            self.speed=6
            self.live=True

    #移动子弹的方法
    def MoveBullet(self):
       if self.direction == 'U':
          if self.rect.top>0:
              self.rect.top-=self.speed
          else:
             #修改子弹的状态
             self.live=False
       elif self.direction == 'D':
           if self.rect.top<MianGame.SCREEN_HEIGHT-self.rect.height:
               self.rect.top+=self.speed
           else:
               # 修改子弹的状态
               self.live = False
       elif self.direction == 'L':
           if self.rect.left>0:
               self.rect.left-=self.speed
           else:
               # 修改子弹的状态
               self.live = False
       elif self.direction == 'R':
           if self.rect.left<MianGame.SCREEN_WIDTH-self.rect.width:
               self.rect.left+=self.speed
           else:
               # 修改子弹的状态
               self.live = False
    #展示子弹的方法
    def displayBullet(self):
       #将图片surface加载到窗口
       MianGame.window.blit(self.image,self.rect)

    #新增我方子弹碰撞敌方坦克的方法
    def hitEnemyTank(self): #self代表的是我方坦克的子弹
        for enemyTank in MianGame.enemyTankList:
            if pygame.sprite.collide.rect(enemyTank,self):
                #产生一个爆炸效果
                explode =  Explode(enemyTank)   #传入敌方坦克的坐标
                #将爆炸效果加入到爆炸效果列表
                MianGame.ExplodeList.append(explode)
                self.live = False   #说明子弹打中敌方坦克,子弹消亡,状态为False
                enemyTank.live = False  #敌方坦克的状态也为False

    #墙壁类
class wall():
    def __init__(self):
        pass
    #展示墙壁的方法
    def displaywall(self):
        pass

    #爆炸类
class Explode():
    def __init__(self,tank):    #tank代表的是敌方坦克
        self.rect = tank.rect
        self.step = 0
        #加载图片集
        self.images == [
            pygame.image.load('img/blast0.gif'),
            pygame.image.load('img/blast1.gif'),
            pygame.image.load('img/blast2.gif'),
            pygame.image.load('img/blast3.gif'),
            pygame.image.load('img/blast4.gif')
        ]
        self.image == self.images[self.step]
        self.live = True    #给爆炸图片添加一个值,在开始的时候图片是会展示的


    #展示爆炸效果的方法
    def displayExlpode(self):
        #把爆炸图片加载到窗口中
        if self.step < len(self.images):
            MianGame.window.blit(self.image, self.rect)
            self.image=self.images[self.step]   #避免在步数变化后而加载的图片没有变化
            self.step += 1  # 每次产生爆炸的时候,加载的图片是不一样的
        else:
            self.live = False   #爆炸完成之后就不要再展示了
            self.step = 0
    #音效类
class Music():
    def __init__(self):
        pass
    #展示音效的方法
    def displayMusic(self):
        pass

if __name__=='__main__':
      MianGame().Startgame()
      MianGame.getTextSurface()

老师,可以帮我看看问题在哪儿嘛,live属性检查好多遍了,还是不对

blob.png

Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 33048楼
JAVA 全系列/第五阶段:JavaWeb开发/计算机网络协议详解 33050楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 33052楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 33053楼
JAVA 全系列/第二十一阶段:分布式医疗云平台/看病就诊前后端开发(旧) 33054楼
JAVA 全系列/第九阶段:Spring Boot实战/Spring Boot 33055楼

老师,我想请教一下当鼠标悬停在白色导航上照理说出现的下拉导航里的样式应该是一致的,但是为什么我换了其他图片之后它的布局就完全改变了(布局是统一设计的,只是换了不同的图片想去验证一下);我也下载了源代码直接在源代码相应部分也试着换了其他图片,发现结果都是一样的,布局会紊乱。

<!--白色导航部分-->
    <div class="white-nav">
        <div class="wrap">
            <div class="logo">
                <img class="mi-home" src="images/mi-home.png" alt="">
                <img class="mi-logo" src="images/mi-logo.png" alt="">
            </div>
            <div class="nav-bar">
                <ul>
                    <li>
                        <a href="#">
                            <img src="images/f58837161090e2e04bf687088b2ffe77.gif" alt="">
                        </a>
                    </li>
                    <li>
                        <a href="#">小米手机</a>
                        <div class="nav-bar-list">
                            <div class="wrap">
                                <ul>
                                    <li>
                                        <a href="#">
                                            <div class="img-box">
                                                <img src="images/8729282b199b3ec51e31c1b6b15f3f93.jpg" alt="">
                                            </div>
                                            <p class="name1">小米10至尊纪念版</p>
                                            <p class="price1">5299元起</p>
                                        </a>
                                    </li>
                                    <li>
                                        <a href="#">
                                            <div class="img-box">
                                                <img src="images/b11742a0be47f9d97bb6a13ea580018d.png" alt="">
                                            </div>
                                            <p class="name1">小米11</p>
                                            <p class="price1">3999元起</p>
                                        </a>
                                    </li>
                                    <li>
                                        <a href="#">
                                            <div class="img-box">
                                                <img src="images/b11742a0be47f9d97bb6a13ea580018d.png" alt="">
                                            </div>
                                            <p class="name1">小米10至尊纪念版</p>
                                            <p class="price1">5299元起</p>
                                        </a>
                                    </li>
                                    <li>
                                        <a href="#">
                                            <div class="img-box">
                                                <img src="images/b11742a0be47f9d97bb6a13ea580018d.png" alt="">
                                            </div>
                                            <p class="name1">小米10至尊纪念版</p>
                                            <p class="price1">5299元起</p>
                                        </a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </li>
                    <li>
                        <a href="#">Redmi 红米</a>
                    </li>
                    <li>
                        <a href="#">电视</a>
                    </li>
                    <li>
                        <a href="#">笔记本</a>
                    </li>
                    <li>
                        <a href="#">家电</a>
                    </li>
                    <li>
                        <a href="#">路由器</a>
                    </li>
                    <li>
                        <a href="#">智能硬件</a>
                    </li>
                    <li>
                        <a href="#">服务</a>
                    </li>
                    <li>
                        <a href="#">社区</a>
                    </li>
                </ul>
            </div>
            <div class="search"></div>
        </div>
    </div>
/*白色导航部分*/

.white-nav {
    width: 100%;
    height: 100px;
    position: relative;
}

.logo {
    width: 55px;
    height: 55px;
    background-color: #ff6700;
    float: left;
    margin-top: 22.5px;
    position: relative;
    overflow: hidden;
}

.logo>img {
    width: 100%;
    height: 100%;
    position: absolute;
    transition: all .2s;
}

.mi-home {
    left: -55px;
}

.mi-logo {
    left: 0;
}

.logo:hover>.mi-home {
    left: 0;
}

.logo:hover>.mi-logo {
    left: 55px;
}

.nav-bar {
    width: 875px;
    height: 100px;
    float: left;
    line-height: 100px;
}

.nav-bar>ul>li {
    float: left;
}

.nav-bar>ul>li>a {
    color: #333;
    padding: 0 10px;
}

.nav-bar>ul>li>a:hover {
    color: #ff6700;
}

.nav-bar>ul>li:first-child img {
    margin-top: 22.5px;
}

.nav-bar-list {
    width: 100%;
    height: 229px;
    background-color: #fff;
    border-top: 1px solid #eee;
    box-shadow: 0 3px 4px rgba(0, 0, 0, .1);
    position: absolute;
    top: 100px;
    left: 0;
    display: none;
    z-index: 999;
}

.nav-bar-list li {
    width: 204px;
    float: left;
}

.nav-bar-list li:last-child .img-box {
    border-right: 0;
}

.img-box {
    width: 100%;
    height: 110px;
    margin-top: 35px;
    border-right: 1px solid #eee;
    box-sizing: border-box;
    margin-bottom: 16px;
}

.nav-bar-list p {
    line-height: 20px;
    font-size: 12px;
}

.name1 {
    color: #333;
}

.price1 {
    color: #ff6700;
}

.nav-bar li:hover .nav-bar-list {
    display: block;
}

.search {
    width: 296px;
    height: 100px;
    background-color: pink;
    float: left;
}

这是我做的部分的截图:

图片.png

这是源码我换了图片之后的截图

图片.png

WEB前端全系列/第一阶段:HTML5+CSS3模块/CSS3新特性 33056楼

老师Scanner为什么会报空指针异常


package internet;


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;


public class TwoSever {

      public static void main(String[] args) {

      ServerSocket serverSocket = null;

     

try {

serverSocket = new ServerSocket(8888); 

System.out.println("服务端启动,监听端口8888");

Socket socket = serverSocket.accept();

System.out.println("连接成功!");

Thread t= new Thread(new ServiceRead(socket));

Thread t1= new Thread(new ServiceWrite(socket));

t1.start();

t.start();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

}

}

}

//接收消息的

class ServiceRead implements Runnable{

    private Socket socket;

    public ServiceRead(Socket socket) {

    this.socket=socket;

    }

@Override

public void run() {

regular();

}

private void regular() {

BufferedReader bu= null;

try {

bu = new BufferedReader(new InputStreamReader(socket.getInputStream()));

   while(true) {

   String str=bu.readLine();

   System.out.println("客户端说:"+str); 

   }

}catch(Exception e) {

e.printStackTrace();

}finally {

try {

if(bu != null) {

bu.close();

}

if(socket != null) {

socket.close();

}

}catch(Exception e) {

e.printStackTrace();

}

}

}

}



//sever发送消息

class ServiceWrite implements Runnable{

    private Socket socket;

   

    public ServiceWrite(Socket socket) {

    this.socket=socket;

    }

@Override

public void run() {

send();

}

private void send() {

Scanner scanner = null;

PrintWriter bw =null;

try {

bw= new PrintWriter(this.socket.getOutputStream());

while(true) {

String str = scanner.nextLine();

    bw.print(str);

    bw.flush();

}

}catch(Exception e) {

e.printStackTrace();

}finally {

try {

if(scanner != null) {

scanner.close();

}

if(bw != null) {

bw.close();

}

if(socket !=null) {

socket.close();

}

}catch(Exception e) {

e.printStackTrace();

}

}

}

}


image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 33058楼

老师:

  您好,我的代码和运行结果如下:
package com.bjsxt;

public class MyDoublyLinkedList<E> implements MyList<E> {

    /**
     * 定义双向链表中的节点对象
     */
    class Node<E> {
        E item;         //记录元素
        Node<E> prev;   //记录前一个节点对象
        Node<E> next;   //记录下一个节点对象
        Node(Node<E> prev,E item, Node<E> next) {
            this.prev = prev;
            this.item = item;
            this.prev = next;
        }
    }

    private Node head;      //记录头节点
    private Node tail;      //记录尾节点
    private int size;       //记录元素个数

    /**
     * 向双向链表中添加元素
     */
    public void add(E element) {
        this.linkLast(element);
    }

    /**
     * 将节点对象添加到双向链表中的尾部
     */
    private void linkLast(E element) {
        //获取尾节点
        Node t = this.tail;

        //创建节点对象
        Node<E> node = new Node<>(t,element,null);

        //将新节点定义为尾节点
        this.tail = node;
        if(t == null) {
            this.head = node;
        }else {
            t.next = node;
        }
        this.size ++;
    }

    /**
     * 根据指定位置获取元素
     */
    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:"+size);
        }
    }

    /**
     * 根据位置获取指定节点对象
     */
    private Node getNode(int index) {

        //判断当前位置距离头或尾哪个更近些
        if (index < (this.size) >> 1){
            Node node = this.head;
            for(int i=0; i<index; i++) {
                node = node.next;
            }
            return node;
        }else{
            Node node = this.tail;
            for(int i = this.size-1;i>index;i--) {
                node = node.prev;
            }
            return node;
        }
    }

    /**
     * 返回元素的个数
     */
    public int size() {
        return this.size;
    }

    /**
     *  根据指定位置删除元素
     */
    public E remove(int index) {

        //对index进行合法校验
        this.checkIndex(index);

        //根据指定位置获取节点对象
        Node<E> node = this.getNode(index);

        //获取节点对象中的元素
        E item =  node.item;

        //判断节点是否为头节点
        if(node.prev == null) {
            this.head = node.next;
        }else {
            //完成当前节点直接前驱节点与当前节点的直接后继节点的挂接
            node.prev.next = node.next;
        }

        //判断节点是否为尾节点
        if(node.next == null) {
            this.tail = node.prev;
        }else{
            node.next.prev = node.prev;
        }

        //当前节点断掉与它直接前驱节点的连接
        node.prev = null;

        //当前节点断掉与它直接后继节点的连接
        node.next = null;
        node.item = null;

        //记录元素个数
        this.size--;
        return item;
    }

    public static void main(String[] args) {
        MyList<String> myList = new MyDoublyLinkedList<>();
        myList.add("a");
        myList.add("b");
        myList.add("c");
        myList.add("d");
        myList.add("e");

        System.out.println(myList.size());
        System.out.println(myList.remove(0));
        for(int i=0;i<myList.size();i++) {
            System.out.println(myList.get(i));
        }
    }
}

运行结果是:


5

a

b

c

Exception in thread "main" java.lang.NullPointerException

at com.bjsxt.MyDoublyLinkedList.get(MyDoublyLinkedList.java:59)

at com.bjsxt.MyDoublyLinkedList.main(MyDoublyLinkedList.java:150)


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

<style>
        body {
            background-color: #f1f1f1;
        }

        .phone {
            width: 1300px;
            height: 680px;
            margin: 0 auto;
        }

        .left {
            float: left;
            width: 234px;
            height: 680px;
            margin-top: 10px;
            background-color: pink;
        }

        .right {
            float: right;
            width: 1050px;
        }

        .item {
            width: 250px;
            height: 335px;
            float: left;
            margin-left: 10px;
            background-color: rgb(215, 212, 212);
            margin-top: 10px;
            text-align: center;
        }
        .left img {
            width: 234px;
            height: 680px;
        }
        .right img {
            width: 220px;
            height: 220px;
        }
    </style>

</head>

<body>
    <div class="phone">
        <div class="left">
            <img src="./images/1.webp">
        </div>
        <div class="right">
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
            <div class="item">
                <img src="./images/2.webp">
                <h3>黑鲨4S</h3>
                <p>磁动力升降肩键</p>
            </div>
        </div>
    </div>
</body>

image.png

WEB前端全系列/第一阶段:HTML5+CSS3模块/初识CSS 33060楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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