Surpass Day15——Java 数组模拟栈数据结构、酒店管理系统(1)

2.1 题目要求

2.2  代码呈现

2.3 问题展现


1、数组模拟栈数据结构

===========

1.1 题目要求


1)这个栈可以存储java中的任何引用类型的数据;

2)在栈中提供push方法模拟压栈;(栈满了,要有提示信息)

3)在栈中提供pop方法模拟压栈;(栈空了,要有提示信息)

4)编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈操作;

5)假设栈的默认初始化容量是10;

1.2 代码呈现


public class Text {

public static void main(String[] args) {

//创建一个栈对象,初始化容量是10个

Stack s = new Stack();

s.push(“12345ty”);

s.push(new Object());

s.push(new Object());

s.push(new Object());

s.push(new Object());

s.pop();

s.pop();

s.pop();

s.pop();

s.pop();

s.pop();

//可以使用for循环进行压栈和弹栈

}

}

class Stack{

//存储任何引用类型数据的数组

private Object[] elements;

//有参构造方法

public Stack(Object[] elements) {

this.elements = elements;

}

//无参构造方法

public Stack() {

//一维数组动态初始化

//默认初始化容量为10

this.elements = new Object[10];

}

//栈帧(永远指向栈顶元素)

private int index=-1;

//压栈方法

public void push(Object obj){

if(this.index >= this.elements.length-1){

System.out.println(“栈内存已满,压栈失败”);

return;

}

index++;

elements[index] = obj;

System.out.println(obj + “元素,压栈成功,栈帧指向” + index);

}

//弹栈方法

public void pop(){

if(this.index <= -1) {

System.out.println(“栈内存已空,弹栈栈失败”);

}

else

System.out.println(elements[index] + “元素,弹栈成功,栈帧指向” + --index);

}

//static实例变量的get方法

public Object[] getElements() {

return elements;

}

//static实例变量的set方法

public void setElements(Object[] elements) {

this.elements = elements;

}

//实例变量栈帧的get方法

public int getIndex() {

return index;

}

//实例变量栈帧的set方法

public void setIndex(int index) {

this.index = index;

}

}

1.3 问题展现


1)为什么选择Object类型数组?

因为这个栈可以存储java中任何引用类型的数据

new Animal( )对象和new Peaple( )对象包括字符串都可以放进去,因为Animal和Peaple的超级费雷都是Object;

Object [ ] 是一个万能的口袋,这个口袋可以装任何引用数据类型的数据

2)关于字符串

字符串其实是一个字符串对象,但在java中字符串有优待,不需要new也是一个对象

String s = “asdfghj”;

String s = new String(“asdfghj”);

3)关于set和get方法

在类中,大多采用封装机制,所以set和get方法有时候虽然用不到,但也需要写上

4)数组的初始化

数组的初始化可以在定义时直接初始化

this.elements = new Object [10];//赋值也是在构造方法调用的时候初始化

也可以在构造方法中初始化

public Stack() {

this.elements = new Object[10];

}

5)关于System.out.println()方法

所有的System.out.println()方法在执行时,如果输出引用,自动调用引用的toString()方法

e.g.:System.out.println(obj + “元素,压栈成功”);这里的obj其实调用了toString()方法


2、酒店管理系统

========

2.1 题目要求


为某酒店编写程序:酒店管理程序,模拟订房、退房、打印所有房间状态等功能

1)该系统的用户是:酒店前台

2)酒店使用一个二维数组来模拟"Room[ ] [ ] rooms;"

3)酒店中的每一个房间应该是一个java对象:Room;

4)每一个房间Room应该有:房间编号、房间类型属性、房间是否为空;

5)系统对外提供的功能:

可以预定房间:用户输入房间编号,订房

可以退房:用户输入房间编号,退房;

可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间的状态

2.2  代码呈现


import java.util.Scanner;

public class HotelSystem {

public static void main(String[] args) {

//创建酒店对象

Hotel hotel = new Hotel();

Scanner s = new Scanner(System.in);

Scanner roomNo = new Scanner(System.in);

meau();

while(true){

int i = s.nextInt();

switch (i){

case 1:

hotel.print();break;

case 2:

System.out.println(“请输入预定的房间号”);

hotel.order(roomNo.nextInt());break;

case 3:

System.out.println(“请输入退订的房间号”);

hotel.exit(roomNo.nextInt());break;

case 0:

return;

}

}

}

public static void meau(){

//欢迎页面

System.out.println("_____________________________________________________________________ ");

System.out.println(“**********************┍------------------------┑ *******************”);

System.out.println(“**********************   欢迎使用酒店管理系统     ********************”);

System.out.println(“**********************┕------------------------┙ *******************”);

System.out.println(“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx菜单xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”);

System.out.println(“====================================================================”);

System.out.println(“…     1.查看房间         …         2.表示订房     …”);

System.out.println(“…     3.表示退房         …         0.退出系统     …”);

System.out.println(“____________________________________________________________________”);

System.out.println(“请输入功能编号:”);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

学习分享,共勉

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!

资料整理不易,读者朋友可以转发分享下!

Java核心知识体系笔记.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

中高级Java开发面试高频考点题笔记300道.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

架构进阶面试专题及架构学习笔记脑图

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

Java架构进阶学习视频分享
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!**

资料整理不易,读者朋友可以转发分享下!

Java核心知识体系笔记.pdf

[外链图片转存中…(img-XDEpzztB-1712693056011)]

中高级Java开发面试高频考点题笔记300道.pdf

[外链图片转存中…(img-HuHDSXYQ-1712693056012)]

架构进阶面试专题及架构学习笔记脑图

[外链图片转存中…(img-4OSXdYXv-1712693056012)]

Java架构进阶学习视频分享
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值