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