幾個Java編程的典型例子

2021-03-02 動力節點Java學院

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資訊

相關焦點

  • JAVA並發編程:並發問題的根源及主要解決方法
    比如java中簡單的一條語句count += 1。映射到CPU指令有三條,讀取count變量指令,變量加1指令,變量寫回指令。雖然在高級語言(java)看來它就是一條指令,但實際上卻是三條CPU指令,並且這三條指令的原子性無法保證。也就是說,可能在執行到任意一條指令的時候被打斷,CPU被其他線程搶佔了。
  • Java並發編程:CountDownLatch、CyclicBarrier和Semaphore
    在java 1.5中,提供了一些非常有用的輔助類來幫助我們進行並發編程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我們就來學習一下這三個輔助類的用法。下面舉幾個例子就明白了:假若有若干個線程都要進行寫數據操作,並且只有所有線程都完成寫數據操作之後,這些線程才能繼續做後面的事情,此時就可以利用CyclicBarrier了:public class Test { public static void main(String[] args) { int N = 4; CyclicBarrier barrier
  • 跟我學java編程—Java的Scanner類
    語句「import java.util.*;」,用於導入包含Scanner的類庫,Scanner包含在Java 核心類庫util中,要使用Scanner類,必須導入java.util庫,類庫導入關鍵字為import。
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    Java在程式語言排行榜中一直牢牢佔據榜首位置,幾乎所有的大中型網際網路的應用系統在伺服器端開發首選都是Java編程,正因如何吸引這不少年輕人投入該行業,Java雖不想其它程式語言那麼複雜,但是知識體系還是很龐大的,因此想要學好並非容易之事,不少想要跨入Java編程行業的同學們通過網絡搜索各式各樣的學習資料
  • 5月編程最新語言指數排名 java不再是第一 php才是未來最好語言
    前幾天谷歌CEO皮查伊在會議展示了人工智慧的成果,在人工智慧上谷歌領先世界,這次的展示讓人工智慧重新改變的人們認識,也直接導致人工智慧程式語言Python的熱度在5月排名第一。從5月排名指數上看出來java首次被Python超越成為第一寶座,PHP挺近第四位,緊接這才是c#。每個人都說PHP是世界上最好的語言,在PHP每次指數都不斷提高下,不久將來PHP才是最好語言。
  • java如何快速入門?
    相信我,Java是一種程式語言,如果你集中Java的一個知識面首先去專注學習,那麼學習Java還是挺容易的;但是,如果你想一下子把Java的各個應用領域知識都去接觸,試圖花最短的時間去學習完Java,那麼最後的結果可能會令你失望。
  • 為什麼Java語言比CPP競爭編程要慢?
    最重要的因素是開始競爭性編程時選擇合適的語言。通常,我們選擇語法簡短,執行速度非常快或我們熟悉的語言,並且我們知道特定語言的所有工作模式,無論是Java還是C ++。大多數程式設計師使用C ++進行競爭性編程,也有許多老程式設計師轉而使用C ++。
  • 零基礎學習Java者必須了解的Java語言常識以及知識
    獲取更多精彩文章請關注云主宰蒼穹引言:根據TIOBE程式語言排行榜2019年三月份榜單排名,Java語言位居榜首。Java語言以其良好的面向對象設計思想獲得了市場和程式設計師的喜愛。那麼你是否想要學習Java語言了,畢竟TIOBE的排名代表著程序語言的未來趨勢。
  • 傳智播客:Java學科API的概述以及Scanner的操作
    能夠明確API的使用步驟能夠使用Scanner類獲得鍵盤錄入的數據一、API概述:API,全稱:Application Programming Interface,名詞解釋:應用程式編程接口這些類將底層的代碼實現封裝了起來,我們編程人員是不用關心這些類是怎麼實現的,需要的是學習這些類的使用方法就可以。所以我們可以通過查詢API的方式,來獲得Java提供的類的學習方法,並學會如何使用它們。
  • 「原創」Java並發編程系列09|基礎乾貨
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文為何適原創並發編程系列第9篇。現在,我們進入正題:介紹並發編程的基礎性概念。
  • java網絡編程之基礎知識點總結
    概述本文是網絡編程系列的第一篇文章,所以不講代碼,主要是網絡編程的一些基礎知識,下面的這些知識點主要是對java網絡編程這本書的歸納與整理。有興趣的同學可以看看。我們知道計算機之間的通信要經過一系列複雜的過程,計算機之間通過傳輸介質、通信設施和網絡通信協議互聯,實現資源共享和數據傳輸。
  • 選擇java,你絕對不會後悔!
    學Java的人現在確實很多,一般選擇入行做IT做編程開發的人,基本都把Java作為首選語言。為什麼說選擇java是比較好的呢,主要是從以下幾個方面來看的:1、高頻率使用java最為當今最火爆的程式語言,也是當今使用率最高的程式語言。如今各種手機軟體,開發軟體等都離不開java語言,各大企業的運營也都離不開java人才的支持。
  • 編程入門先學什麼?零經驗的人學編程難嗎
    「編程入門先學什麼」這是所有想了解編程行業都擔心的一個問題,「零經驗的人學編程難嗎」這是所有想進入編程行業都需要關注的一個問題。一聽編程兩個字很多人都在退縮了,有很多的同學是非常的想知道,編程入門先學什麼,零經驗的人學編程難不難,小編整理了相關信息,希望會對大家有所幫助!
  • java.util.Scanner的幾種next方法
    java.util.Scanner,這個類,想必大家都不怎麼陌生,在初學Java這門程式語言時,都見過,使用過吧。今天就來說說java.util.Scanner類的幾種next方法。scanner.nextBigDecimal()方法如果想要通過java.util.Scanner來獲取一個輸入的BigDecimal對象,則可以使用類似下面示例的代碼。
  • JAVA基礎學習|JAVA中的包總結!
    4.java.net包。  該包提供實現網絡應用與開發的類。  5.java.sql包。  該包提供了使用Java語言訪問並處理存儲在數據源(通常是一個關係型資料庫)中的數據API。  6.java.awt包
  • 跟我學java編程—認識java的整數類型
    示例2:int類型的溢出在D盤Java目錄下,新建「OverFlow.java」文件。用記事本打開「OverFlow.java」文件,輸入以下代碼:編譯「OverFlow.java」文件,在命令行窗口輸入「javac OverFlow.java」並執行命令,編譯器顯示如下信息:編譯器給出過大的整數錯誤信息,num
  • java是什麼文件格式?.java文件怎麼打開?
    Java是由Sun Microsystems公司於1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱,是當今最流行的編程技術。  java是什麼文件?  Java文件是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺的總稱。
  • Java編程中基礎反射詳細解析
    直接使用java.exe命令來運行某個主類1.4 類加載器類加載器負責加載所有的類,系統為所有加載到內存中的類生成一個java.lang.Class 的實例。被編譯後的Java文件.class也被JVM解析為一個對象,這個對象就是java.lang.Class。這樣當程序在運行時,每個java文件就最終變成了Class類對象的一個實例。我們通過Java的反射機制應用到這個實例,就可以去獲得甚至去添加改變這個類的屬性和動作,使得這個類成為一個動態的類。
  • 關於java圖標是個咖啡的N種猜測
    為什麼java的圖標是個咖啡杯呢?小編也很好奇,於是收集了一些關於為什麼是咖啡杯的各種猜測,你認為哪個最靠譜?但由於註冊重名的問題,大家集思廣益想了很多,一個個去測試能否註冊,直到第四位的java才註冊成功,於是所有人慶祝的喝了一杯咖啡。之後咖啡也成為了java圖標的一部分。第三個版本名字是馬克·奧頗門(為java起名字的人)在一家咖啡店與同事品嘗咖啡時得到靈感的。Java是印度尼西亞爪哇島的英文名稱,因盛產咖啡而聞名。
  • 最好的程式語言?美國出數據了,Java吃香,PHP敗了
    編碼江湖,長期以來就不存在什麼武林盟主,相反的,各類程式語言則在自己擅長的領域獨領風騷,誰要敢挑頭立盟主,就會死於滿天的口水之中。如今一組來自美國的數據,卻再次引起了「世界上最好程式語言」之爭。美國java程式設計師的年薪並不是很出彩,約102000美元,但崗位數量卻出奇的多,高達72226,約是其他主流語言的兩倍左右。這些崗位大都聚集在紐約市、聖何塞、華盛頓特區。程式語言老大哥C,在美國的命運如何呢?