java学习初探八之数组应用
来源:互联网 发布:雷蛇驱动有mac版吗 编辑:程序博客网 时间:2024/06/06 00:52
1.酒店管理系统的作业
//抽象酒店的房间public class Room { private String no; private String type;//标准间,双人间,豪华间 private boolean isUse;//false表示空闲,true表示占用 public Room(String no,String type,boolean isUse) { super(); this.no=no; this.type=type; this.isUse=isUse; } public String toString() { return "{"+no+","+type+","+(isUse?"占用":"空闲")+"}"; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isUse() { return isUse; } public void setUse(boolean isUse) { this.isUse = isUse; }}
public class Hotel { //房间 Room[][] rooms; public Hotel() { //5层,每层10个房间 rooms = new Room[5][10]; //赋值 //1,2标准间 //3,4双人间 //5 豪华间 for (int i = 0; i < rooms.length; i++) { for (int j = 0; j < rooms[i].length; j++) { if(i==0||i==1) {//标准间 rooms[i][j]=new Room((i+1)*100+j+i+"", "标准间", false); } if(i==2||i==3) {//双人间 rooms[i][j]=new Room((i+1)*100+j+i+"", "双人间", false); } if(i==4) {//豪华间 rooms[i][j]=new Room((i+1)*100+j+i+"", "豪华间", false); } } } } //对外提供一个打印酒店房间列表的方法 public void print() { for (int i = 0; i < rooms.length; i++) { for(int j=0;j<rooms[i].length;j++) { System.out.print(rooms[i][j]+""); } System.out.println(); } } //对外提供一个预订酒店的方法 public void order(String no) { for (int i = 0; i < rooms.length; i++) { for(int j=0;j<rooms[i].length;j++) { if(rooms[i][j].getNo().equals(no)) { //将该房间状态改为占用 if(rooms[i][j].isUse()==false) { rooms[i][j].setUse(true); System.out.println("预订成功!"); return; }else { System.out.println("该房间已被占用,预订失败!"); return; } } } } System.out.println("您输入的房间号有误"); }}
import java.util.Scanner;public class ArrayTest01 { public static void main(String[] args) { Scanner s=new Scanner(System.in) ; System.out.println("欢迎使用酒店管理系统,酒店房间列表如下所示"); //初始化酒店 Hotel h=new Hotel(); //输出酒店列表 h.print(); while(true) { //预订房间 System.out.println("请输入预订房间的编号: "); String no=s.next(); h.order(no); //输出酒店列表 h.print(); } }}
2.使用数组模拟栈
package com.array;//栈,后进,先出public class MyStack{ //使用数组存储数据 //栈可以存储多个引用类型的元素 Object[] elements; //指向栈顶元素上方的一个帧 int index; //栈默认初始化容量为5 //constructor public MyStack() { this(5); } public MyStack(int max) { elements=new Object[max]; } //栈对外应提供一个压栈的方法 public void push(Object element) throws StackOperationException { if(index==elements.length) { throw new StackOperationException("栈已满"); } elements[index++]=element; } //栈对外应该提供一个弹栈的方法 public Object pop() throws StackOperationException { if(index==0) { throw new StackOperationException("栈已空"); } return elements[--index]; }}
package com.array;//栈操作异常public class StackOperationException extends Exception{ public StackOperationException() {} public StackOperationException(String message) { System.out.println(message); }}
package com.array;public class StackTest { public static void main(String[] args) { MyStack s=new MyStack(); User u1=new User("Jack", 20); User u2=new User("Lilei", 21); User u3=new User("Wanghong", 22); User u4=new User("Tom", 23); User u5=new User("Jerry", 24); try { //压 s.push(u1); s.push(u2); s.push(u3); s.push(u4); s.push(u5); s.push(u5); } catch (StackOperationException e) { e.printStackTrace(); } try { //弹 System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); } catch (StackOperationException e) { e.printStackTrace(); } }}class User{ String name; int age; public User(String name,int age) { this.name=name; this.age=age; } public String toString() { return "User[name="+name+",age="+age+"]"; }}//输出结果:栈已满com.array.StackOperationException at com.array.MyStack.push(MyStack.java:21) at com.array.StackTest.main(StackTest.java:19)User[name=Jerry,age=24]User[name=Tom,age=23]User[name=Wanghong,age=22]User[name=Lilei,age=21]User[name=Jack,age=20]
3.冒泡排序
package com.array;/* * int 类型数组 :3 1 6 2 5 */public class BubbleSort { public static void main(String[] args) { int[] a= {3,1,6,2,5}; for(int i=0;i<a.length;i++) {//外层循环length次 for(int j=0;j<a.length-1-i;j++) {//每次比较前a.length-1-i if(a[j]>=a[j+1]) {//保证大数靠右 int tmp=a[j+1]; a[j+1]=a[j]; a[j]=tmp; } } } for(int m=0;m<a.length;m++) { System.out.print(a[m]+" ");//冒泡排序后的数组 } }}//输出结果1 2 3 5 6
4.选择排序
算法:找出最小值,然后把这个最小值和最前面的数据交换位置。
package com.array;public class SelectSort { public static void main(String[] args) { int[] a= {3,1,6,2,5}; //选择排序 for(int i=0;i<a.length-1;i++) { //假设第一个数据是最小值 //记录最小值元素的下标 int min=i; for(int j=i+1;j<a.length;j++) { if(a[min]>a[j]) { min=j; } } //考虑交换位置 if(min!=i) { int tmp; tmp=a[min]; a[min]=a[i]; a[i]=tmp; } } //输出 for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } }}/* 3 1 6 2 5 下标 第一次循环 0 1 3 6 2 5 3 6 2 5 第二次循环 1 2 6 3 5 6 3 5 第三次循环 2 3 6 5 6 5 第四次循环 3 5 6 */
5二分法查找(折半查找)
(1)二分法查找是建立在已经排序的基础上的;
(2)以下程序,从小到大排序
(3)这个数组中没有重复的元素
package com.array;/* 1 3 5 9 11 13 56 以上是一个已经排好序的int类型的数组,要求快速找出13这个元素的下标 */public class Find { public static void main(String[] args) { int[] a= {1,3,4,5,7,8,9,10,23,25,29}; int destElement=100; //查找10的下标 int index=binarySearch(a,destElement);//如果找到则返回元素下标,如果找不到,返回-1 if(index==-1) {System.out.println(destElement+"该元素不存在");} else {System.out.println(destElement+"该元素下标为"+index);} } //折半查找算法 public static int binarySearch(int[] a,int destElement) { int begin=0; int end=a.length-1; while (begin<=end) { int mid=(begin+end)/2; if(a[mid]==destElement) {return mid;} else if (a[mid]>destElement) { end=mid-1; }else if (a[mid]<destElement) { begin=mid+1; } } return -1; }}
6.Arrays数组工具类
java.util.Arrays是sun提供的一个工具类
该类主要是针对数组的操作,比如排序、二分查找等。
package com.array;import java.util.Arrays;public class ArrayTest07 { public static void main(String[] args) { int[] a= {3,1,6,2,5}; //排序 Arrays.sort(a); //输出 for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } System.out.println(); //对排好序的数据进行二分查找 int index=Arrays.binarySearch(a, 6); System.out.println("该元素下标是"+index); //填充数组 Arrays.fill(a,0,2,8);//0 1被填充,2没有 for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } }}//输出结果1 2 3 5 6 该元素下标是48 8 3 5 6
阅读全文
0 0
- java学习初探八之数组应用
- java学习初探八之数组一维数组、二维数组
- Java基础之八:数组
- java学习之数组的应用
- 动态数组之八:搜索Find()应用
- Java线程学习之线程初探
- Java学习笔记之反射机制初探
- java学习初探2之语言基础
- java学习初探3之方法使用
- java学习初探5之构造方法
- java学习初探5之this关键字
- java学习初探6之接口
- java学习初探6之Object类
- java学习初探6之UML
- java学习初探七之异常处理
- java学习初探九之String
- java学习初探九之StringBuffer、StringBuilder
- java学习初探十之包装类
- RPGMaker MV 插件基础01:制作一个插件
- iOS学习笔记-121.多线程20——NSOperation图片下载合成示例
- oracle 12c PDB里建立的用户登录不上去,显示 IO 错误: Unknown host specified
- (poj 1020 Anniversary Cake)<DFS的巧妙剪枝>
- 深度学习框架学习一
- java学习初探八之数组应用
- HOWTO INSTALL OWNCLOUD WITH NGINX IN UBUNTU LTS
- nor flash datasheet介绍
- Android 高德地图使用
- C++友元函数案例
- 考研数学
- Latex多处引用同一脚注
- 15 java在linux上jni的编程应用
- Atitit uke签名规范 与防伪鉴别 attilax总结