1.模拟酒店房间管理系统,需要如下几个功能:
1、1 in 房间号 客人名字 入住功能
1、2 out 房间号 退房功能
1、3 search 房间号 查询房间状态 如果房间号为-1 则输出所有房间状态
1、4 quit 或 exit 退出
提示:酒店所有的房间用二维数组来实现
代码实现如下:
1 import java.util.Scanner;
2
3 public class HotelDemo {
4 //写在类里面,则每个方法都可以访问到,避免了参数传递的繁琐;
5 static int h=5,w=10;
6 static String[][] rooms=new String[5][10];
7 public static void main(String[] args) {
8 @SuppressWarnings("resource")
9 Scanner s=new Scanner(System.in);
10 while(true){
11 System.out.println("请输入 in,out,search,quit:");
12 String temp=s.next();
13 int room=0;
14 if("in".equals(temp)){//防止出现空指针异常;
15 System.out.println("输入房间号:");
16 room=s.nextInt();
17 System.out.println("输入名字:");
18 String name=s.next();
19 if(in(room,name)) System.out.println("入住完成!");
20 System.out.println("room"+room+"name"+name);
21 }else if("out".equals(temp)){
22 System.out.println("输入房间号:");
23 room=s.nextInt();
24 if(out(room)) System.out.println("退房完成!");
25 System.out.println("out"+room);
26 }else if("search".equals(temp)){
27 System.out.println("输入房间号(-1代表全部):");
28 room=s.nextInt();
29 search(room);
30 }else if("quit".equals(temp)||"exit".equals(temp)){
31 break;
32 }else{
33 System.out.println("命令错误!");
34 }
35 }
36 }
37
38 private static boolean search(int room) {
39 if(room==-1){
40 //打印所有的信息;
41 for(int i=0;i<h;i++){
42 for(int j=0;j<w;j++){
43 int room2=(i+1)*100+j+1;
44 System.out.print(room2+"\t");
45 }
46 System.out.println();
47 for(int k=0;k<w;k++){
48 System.out.print(rooms[i][k]==null?"empty":rooms[i][k]);
49 System.out.print("\t");
50 }
51 System.out.println();
52 System.out.println();
53 }
54 return true;
55
56 }else{
57 int r=room/100-1;
58 int c=room%100-1;
59 if(r<0||r>=h||c<0||c>=w){
60 System.out.println("房间号错误!");
61 return false;
62 }
63 System.out.println(rooms[r][c]==null?"empty":rooms[r][c]);
64 return true;
65 }
66 }
67
68 private static boolean out(int room) {
69 int r=room/100-1;
70 int c=room%100-1;
71 if(r<0||r>=h||c<0||c>=w){
72 System.out.println("房间号错误!");
73 return false;
74 }
75 if(rooms[r][c]==null||"".equals(rooms[r][c])){//
76 System.out.println("此房间没有人!");
77 return false;
78 }
79 rooms[r][c]=null;
80 return true;
81 }
82
83 private static boolean in(int room, String name) {
84 int r=room/100-1;
85 int c=room%100-1;
86 if(r<0||r>=h||c<0||c>=w){
87 System.out.println("房间号错误!");
88 return false;
89 }
90 if(rooms[r][c]!=null){//
91 System.out.println("此房间已经有人!");
92 return false;
93 }
94
95 rooms[r][c]=name;
96 return true;
97
98 }
99
100 }
2.螺旋矩阵 例
import java.util.Scanner;
public class SpiralSquare01{
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
System.out.println("请输入螺旋方阵的长");
int indexY=s.nextInt();
System.out.println("请输入螺旋方阵的宽");
int indexX=s.nextInt();
if(indexX<=0||indexY<=0){
System.out.println("输入的数字不合法!");
return;
}
int[][] square=new int[indexX][indexY];
int x=0;
int y=0;
for(int i=1;i<=indexX*indexY;){
while(y<square[x].length-1&&square[x][y+1]==0){
square[x][y++]=i++;
}
while(x<square.length&&square[x][y]==0){
square[x++][y]=i++;
}
while(y>0&&square[x-1][y-1]==0){
square[x-1][--y]=i++;
}
--x;
while(x>1&&square[x-1][y]==0){
square[--x][y]=i++;
}
y++;
}
for(int i=0;i<square.length;i++){
for(int j=0;j<square[i].length;j++){
System.out.print(square[i][j]+"\t");
}
System.out.println();
}
}
}
运行结果:
3.经典数学问题:百鸡问题的变形
题目描述:有36个人,36块砖,每人搬了一次,正好搬完。其中男每人每次搬4块,女每人每次搬3块,小孩两人每次搬一块。问 男、女、小孩各多少人?
public class TestBrick {
public static void main(String[] args) {
int manNum=0;
int womanNum=0;
for(int i=0;i<=9;i++){
for(int j=0;j<12;j++){
if(((i*4+j*3+(36-i-j)/2)==36)&&((36-i-j)%2==0)){
//注意:孩子的人数必须是偶数,否则会出现一个孩子一次也没有搬的情况,不符合题意
manNum=i;
womanNum=j;
System.out.println("男的的人数是"+manNum);
System.out.println("女的的人数是"+womanNum);
System.out.println("孩子的人数是"+(36-manNum-womanNum));
}
}
}
}
}
4.倒计时的算法:输入一个秒数,要求转换为XX小时XX分XX秒的格式输出出来
import java.util.Scanner;
public class TestTime {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
System.out.println("请输入秒数:");
int second =s.nextInt();
int hour=second/3600;
int minite=second%3600/60;
int sec=second%60;
System.out.println("转换后为:"+hour+"小时"+minite+"分"+sec+"秒");
}
}
5.密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码;
//密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码;
import java.util.Random;
public class TestPassword {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] pardStore=new char[62];
//把所有的大写字母放进去
for(int i=0;i<20;i++){
pardStore[i]=(char)('A'+i);
}
//把所有的小写字母放进去
for(int i=26;i<52;i++){
pardStore[i]=(char)('a'+i);
}
//吧0到9放进去
for(int i=52;i<62;i++){
pardStore[i]=(char)('0'+(i-52));
}
//生成6位随机密码
Random r=new Random();
for(int i=0;i<6;i++){
int n=r.nextInt(62);
System.out.print(pardStore[n]);
}
}
}
6.写一个彩票的生成代码: 1-33随机选7个不重复的数字;
import java.util.Random;
//写一个彩票的生成代码: 1-33随机选7个不重复的数字;
public class TestLuckyTicket {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] luckTickets=new int[7];
Random r=new Random();
for(int i=0;i<luckTickets.length;i++){
luckTickets[i]=r.nextInt(8)+1;
for(int j=0;j<i;j++){
if(luckTickets[i]==luckTickets[j]){
i--;
break;
}
}
}
for(int i=0;i<luckTickets.length;i++){
System.out.print(luckTickets[i]+",");
}
}
}
7.定义一个字符串变量String str="床前明月光,疑是地上霜。举头望明月,低头思故乡。"。打印成如下格式的:
低 举 疑 床
头 头 是 前
思 望 地 明
故 明 上 月
乡 月 霜 光
。 , 。 ,
public class TestPoet {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="床前明月光,疑是地上霜。举头望明月,低头思故乡。";
char[] poet=str.toCharArray();
int l=18;
boolean flag=true;
int i=0;
while(flag){
for(int j=l;j>=(0+i);){
System.out.print(poet[j]);
j=j-6;
}
System.out.println();
l++;
i++;
if(l==24){flag=false;}
}
}
}
8.九宫格的输出:九宫格就是每一行,每一列,斜着的一列和反斜着的一列的所在的数字之和均相等;最基本的是三行三列=9格就是很出名的九宫格;还可以推广到5*5=25个格;只要行和列的个数均相等并且是奇数就可以;
1 import java.util.Scanner;
2
3 public class JiuGongGe {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 // TODO Auto-generated method stub
10 @SuppressWarnings("resource")
11 Scanner s=new Scanner(System.in);
12 System.out.println("请输入一个大于等于3的奇数");
13 int length=s.nextInt();
14 if(length<3||length%2==0){
15 System.out.println("输入的数字不合法!");
16 return;
17 }
18 int[][] nineTable=new int[length][length];
19 int indexX=0;
20 int indexY=0;
21 indexY=(nineTable.length-1)/2;
22 nineTable[indexX][indexY]=1;
23 for(int i=1;i<nineTable.length*nineTable.length;i++){
24 indexX--;
25 indexY++;
26 if(indexY>=nineTable.length&&indexX>=0){
27 indexY=0;
28 }else if(indexX<0&&indexY<nineTable.length){
29 indexX=nineTable.length-1;
30 }else if(indexY>=nineTable.length&&indexX<0){
31 indexY--;
32 indexX=indexX+2;
33 }else if(nineTable[indexX][indexY]!=0){
34 indexY--;
35 indexX=indexX+2;
36 }
37 nineTable[indexX][indexY]=i+1;
38
39 }
40 for(int i=0;i<nineTable.length;i++){
41 for(int j=0;j<nineTable[i].length;j++){
42 System.out.print(nineTable[i][j]+" ");
43 }
44 System.out.println();
45 System.out.println();
46 }
47
48 }
49
50 }