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 { public static void main(String[] args) { @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;public class TestLuckyTicket { public static void main(String[] args) { 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 8 public static void main(String[] args) {
9 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 }
補充能量,回顧閱讀:
java8的新特性以及用法簡介
【乾貨】編寫更好的Java單元測試的七個技巧
優秀的工程師該具備什麼能力?
【收藏】15道Java 經典面試題及答案分析
java開發必看|Spring基礎知識匯總
點擊左側二維碼 > 識別圖中二維碼 > 關注動力節點
點擊右側二維碼 > 識別圖中二維碼 > 添加老師微信
點擊下方閱讀原文,了解更多java資訊