Java學(xué)習(xí)筆記 - 第005天

第004天作業(yè)改正: Craps賭博游戲
import java.util.Scanner;

//lang - language java核心包 自動(dòng)導(dǎo)入

// CoC - Convention over Configuration 約定優(yōu)于配置
public class CrapsGame {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int money = 1000;
        
        do {
            System.out.println("你的總資產(chǎn): " + money + "元.");
            int bet;
            do {
                System.out.print("請(qǐng)下注: ");
                bet = input.nextInt();
            } while (bet <= 0 || bet > money);
            // [min, max] - (int) (Math.random() * (max - min + 1)) + min);
            // [min, max) - (int) (Math.random() * (max - min)) + min);
            // (min, max) - (int) (Math.random() * (max - min)) + min + 1);
            // [50, 80] (80 - 50)  50   上限-下限 下限
            int face1 = (int) (Math.random() * 6 + 1);
            int face2 = (int) (Math.random() * 6 + 1);
            int firstPoint = face1 + face2;
            System.out.println("玩家搖出了" + firstPoint + "點(diǎn).");
            boolean needsGoOn = false;
            switch (firstPoint) {
            case 7:
            case 11:
                money += bet;
                System.out.println("玩家勝!");
                break;
            case 2:
            case 3:
            case 12:
                money -=bet;
                System.out.println("莊家勝!");
                break;
            default:
                needsGoOn = true;
            }
            while (needsGoOn) {
                face1 = (int) (Math.random() * 6 + 1);
                face2 = (int) (Math.random() * 6 + 1);
                int currentPoint = face1 + face2;
                System.out.println("玩家搖出了" + currentPoint + "點(diǎn).");
                if (currentPoint == 7) {
                    money -= bet;
                    System.out.println("莊家勝!");
                    needsGoOn = false;
                } else if (currentPoint == firstPoint) {
                    money += bet;
                    System.out.println("玩家勝!");
                    needsGoOn = false;
                }
            } 
        } while (money > 0);
        System.out.println("你已經(jīng)破產(chǎn)!");
        input.close();
    }
}

練習(xí)

  • 1.輸出如下:
    1 1
    2 4
    3 9
    ... ...
    10 100
        for (int i = 1; i <= 100; i++) {
            //  \t 表示制表符 嗡呼, 每列左對(duì)齊
            System.out.println(i + "\t" + i * i);
            
            // 不夠x位 左邊補(bǔ) 空格 右對(duì)齊
            System.out.printf("%3d %5d\n", i, i * i); 
            
            // 補(bǔ)0
            System.out.printf("%03d %05d\n", i, i * i); 
        }
  • 2.輸入一個(gè)正整數(shù)抽减,判斷是不是素?cái)?shù)
    提示:檢查2~(n - 1)之間有沒有n的因子
        Scanner input = new Scanner(System.in);
        System.out.print("請(qǐng)輸入一個(gè)數(shù): ");
        int n = input.nextInt();
        boolean isPrime = true; // 先假設(shè)n是素?cái)?shù)
        for (int i = 2; i <= n-1; ++i) {
            if (n % i == 0) {
                isPrime = false;
                break;
            } 
        }
        System.out.println(n + (isPrime ? "是" : "不是") +"素?cái)?shù)");
        input.close();
  • 3.把1~100之間的所有素?cái)?shù)打印出來
public class Ex03 {

    public static boolean isPrime(int i) {
        for (int j = 2; j <= Math.sqrt(i); j++) {
            if (i % j == 0) {
                return false;
            }
        }
        return true;
    }
    
    public static void main(String[] args) {
        for (int i = 1; i <= 100 ; i++) {
            /*boolean isPrime = true;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                System.out.println(i);  
            }*/
            if (isPrime(i)) {
                System.out.println(i);      
            }
        }
    }
}
  • 4.打印乘法口訣表
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //System.out.printf("%d * %d = %2d   ", j, i, i * j);
                System.out.printf("%d*%d=%d\t", j, i, i * j);
                //System.out.print(j + "*" + i + "=" + j * i + "\t");
            }
            System.out.println("");
        }
  • 5.猴子吃桃子
    第一天 吃所有桃子的一半 多吃一個(gè)
    第二天 吃剩下桃子的一半 多吃一個(gè)
    ...
    第十天 每吃 只有 1 個(gè)
    算總共多少桃子
        int total = 1;
        for (int i = 9; i >= 1; i--) {
            total = (total + 1) * 2;
        }
        System.out.println(total);
    }
  • 6.百錢百雞
    公雞 5塊一只 母雞 3塊一只 小雞一塊買3只
    100塊買100只雞
    公雞坡慌、母雞多艇、小雞各有多少只

        // 窮舉法  - 窮盡所有的可能性直到找到正確答案
        for (int i = 0; i <= 100 / 5; i++) {
            for (int j = 0; j <= 100 / 3; j++) {
                for (int k = 0; k <= 99; k += 3) {
                    if (5 * i + 3 * j + k / 3 == 100 && i + j + k == 100) {
                        System.out.printf("公雞有%d只趁冈,母雞有%d只,小雞有%d只\n",
                                i, j, k);
                    }
                }
            }
        }
        //
        for (int x = 0; x <= 20; x++) {
            for (int y = 0; y <= 33; y++) {
                int z = 100 - x - y;
                if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0) {
                    System.out.printf("公雞有%d只血巍,母雞有%d只萧落,小雞有%d只\n",
                            x, y, z);
                }
            }
        }
  • 7.完美數(shù)
    6 = 1 + 2 + 3
    28 = 1 + 2 + 7 + 14
    找1~10000 之間的完美數(shù)
        for (int i = 2; i <= 10000; i++) {
            int sum = 1;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    sum += j;
                    if (i / j != j) {
                        sum += i / j;
                    }
                }
            }
            if (sum == i) {
                System.out.println(i);  
            }
        }
  • 8.輸入年月日嚎幸,告訴這是這年的第幾天
        import java.util.Scanner;

    // 輸入年月日颜矿,告訴這是這年的第幾天
public class Ex10 {

    //如果程序中出現(xiàn)了重復(fù)的或相對(duì)獨(dú)立的功能 那么應(yīng)該將這些功能單獨(dú)寫出一個(gè)方法
    public static boolean isLeapYear(int year) {
        return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
    }
    
    public static int daysOfMonth(int year, int month) {
        if (month == 2) {
            if (isLeapYear(year)) {
                return 29;
                }
            else {
                return 28;
            }
        }
        else if (month == 4 || month == 6 || month == 9 || month == 11) {
            return 30;
            }
        else {
            return 31;
        }
    }
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("請(qǐng)輸入年、月鞭铆、日: ");
        int year = input.nextInt();
        int month = input.nextInt();
        int day = input.nextInt();
        int days = 0;
        
        for (int i = 1; i < month; i++) {
            /*
            switch (i) {
            case 4: case 6: case 9: case 11:
                days += 30;
                break;
            case 2: 
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    days += 29;
                }
                else {
                    days += 28;
                }
                break;
            default:
                days +=31;
                break;
            }
            */
            days += daysOfMonth(year, i);
        }
        days += day;
        //System.out.println("這天是這一年的第" + days + "天");
        System.out.printf("%d年%d月%d日是這一年的第%d天.", year, month, day, days);
        input.close();
    } }

作業(yè)

  • **1.輸出如下各種圖形:
1.png

    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
    
    for (int i = 1; i <= 5; i++) {
        for (int j = 5; j >= 1; j--) {
            if (j > i) {
                System.out.print(" ");
            }
            else {
                System.out.print("*");
            }
        }
        for (int j = 4; j >= i; j--) {
            System.out.print(" ");
        }
        for (int k = 1; k <= i; k++) {
            System.out.print("*");  
        }
        System.out.println();
    }
    
    
    for (int i = 1; i <= 5; i++) {
        for (int j = 4 - i; j >= 0; j--) {
            System.out.print(" ");
        }
        for (int k = i * 2 - 1; k > 0; k--) {
            System.out.print("*");  
        }
        System.out.println();
    }
  • 2. 5個(gè)人去打魚或衡,打了很多魚
    a、b车遂、c封断、d、e
    a 先醒過來舶担,分5份坡疼,多了一條,扔掉衣陶,拿走自己的一份
    b 然后醒過來柄瑰,分5份,多了一條剪况,扔掉教沾,拿走自己的一份
    ...
    最少要捕多少魚

    public class Test01 {

     public static void main(String[] args) {
      int fish = 1;
      boolean flag = true;
      do {
          int fish2 = fish;
          for (int i = 1; i <= 5; i++) {
              if (fish2 % 5 == 1) {
                  fish2 -= myOwn(fish2) + 1;  
              }
              else {
                  break;
              }
              if (i == 5) {
                  flag = false;
              }
          }
          fish += 1;
      } while (flag);
      System.out.println("最少要捕: " + (fish - 1) + "條魚");
    }
    public static int myOwn(int fish) {
      return (fish - 1) / 5;
    }
    }
    
  • 3.2個(gè)日期差多少天

     public class Ex11 {
    
      public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.print("請(qǐng)輸入第一個(gè)日期的年、月译断、日: ");
      int year1 = input.nextInt();
      int month1 = input.nextInt();
      int day1 = input.nextInt();
      System.out.print("請(qǐng)輸入第二個(gè)日期的年授翻、月、日: ");
      int year2 = input.nextInt();
      int month2 = input.nextInt();
      int day2 = input.nextInt();
      int total = 0;
      
      if (year1 == year2) {
          total += theSameYearDifferenceBetweenMonth(year1, month1,
                  day1, month2, day2);
      }
      else if (year1 < year2) {
          total += smallYearBigYearOfDays(year1, month1, day1,
                  year2, month2, day2);
      }
      else {
          total += smallYearBigYearOfDays(year2, month2, day2,
                  year1, month1, day1);
      }
      
      System.out.printf("%d年%d月%d日和%d年%d月%d日相差了%d天.", 
              year1, month1, day1, year2, month2, day2 , total);
      input.close();
    }
    
    public static boolean isLeapYear(int year) {
      return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
    }
    
    public static int daysOfMonth(int year, int month) {
      int days;
      switch (month) {
      case 2:
          days=isLeapYear(year) ? 29 : 28;
          break;
      case 4: case 6: case 9: case 11:
          days = 30;
          break;
      default:
          days = 31;
          break;
      }
      return days;
    }
    
    public static int daysOfYear(int year) {
      return isLeapYear(year) ? 366 : 365;
    }
    
    public static int theSameYearDifferenceBetweenMonth(int year, int month1,
          int day1, int month2,int day2 ) {
      int total = 0;
      if (month1 == month2) {
          if (day1 >= day2) {
              total += day1 - day2;
          } else {
              total += day2 - day1;
          }
      }
      else if (month1 < month2) {
          for (int i = month1 + 1; i < month2; i++) {
              total += daysOfMonth(year, i);
          }
          total +=  daysOfMonth(year, month1) - day1 + day2; 
      }
      else {
          for (int i = month2 + 1; i < month1; i++) {
              total += daysOfMonth(year, i);
          }
          total += daysOfMonth(year, month2) - day2 + day1;
      }
      return total;
    }
    
    public static int smallYearBigYearOfDays(int year1, int month1, int day1,
          int year2, int month2, int day2) {
      int total = 0;
      for (int i = year1 + 1; i < year2; i++) {
          total += daysOfYear(i);
      }
      if (month1 < 12) {
          total += theSameYearDifferenceBetweenMonth(year1, month1, day1,
                  12, 31);
      }
      else {
          total += daysOfMonth(year1, month1) - day1;
      }
      if (month2 > 1) {
          total += theSameYearDifferenceBetweenMonth(year2, 1, 1, month2, day2);
      }
      else {
          total += day2;
      }
      return total + 1;
    }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孙咪,一起剝皮案震驚了整個(gè)濱河市堪唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翎蹈,老刑警劉巖淮菠,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異荤堪,居然都是意外死亡合陵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門逞力,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曙寡,“玉大人,你說我怎么就攤上這事寇荧。” “怎么了执隧?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵揩抡,是天一觀的道長(zhǎng)户侥。 經(jīng)常有香客問我,道長(zhǎng)峦嗤,這世上最難降的妖魔是什么蕊唐? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮烁设,結(jié)果婚禮上替梨,老公的妹妹穿的比我還像新娘。我一直安慰自己装黑,他們只是感情好副瀑,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恋谭,像睡著了一般糠睡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疚颊,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天狈孔,我揣著相機(jī)與錄音,去河邊找鬼材义。 笑死均抽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的其掂。 我是一名探鬼主播油挥,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼清寇!你這毒婦竟也來了喘漏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤华烟,失蹤者是張志新(化名)和其女友劉穎翩迈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盔夜,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡负饲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喂链。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片返十。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖椭微,靈堂內(nèi)的尸體忽然破棺而出洞坑,到底是詐尸還是另有隱情,我是刑警寧澤蝇率,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布迟杂,位于F島的核電站刽沾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏排拷。R本人自食惡果不足惜侧漓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望监氢。 院中可真熱鬧布蔗,春花似錦、人聲如沸浪腐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牛欢。三九已至骡男,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傍睹,已是汗流浹背隔盛。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拾稳,地道東北人吮炕。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像访得,于是被迫代替她去往敵國(guó)和親龙亲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對(duì)兔子悍抑,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子鳄炉,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,140評(píng)論 0 41
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法搜骡,內(nèi)部類的語法拂盯,繼承相關(guān)的語法,異常的語法记靡,線程的語...
    子非魚_t_閱讀 31,669評(píng)論 18 399
  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對(duì)兔子谈竿,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子...
    趙宇_阿特奇閱讀 1,878評(píng)論 0 2
  • 比較笨就把所有的都復(fù)制過來吧,以后再整理://for(表達(dá)式1寸痢,條件表達(dá)式呀洲;表達(dá)式2){// 語句塊//} pu...
    人魚姑娘5394閱讀 664評(píng)論 0 0
  • 價(jià)值觀:有創(chuàng)新精神,敢想敢做;互聯(lián)網(wǎng)產(chǎn)品輪勝負(fù)两嘴;與眾不同丛楚,差異化族壳。 歡迎來到互聯(lián)網(wǎng)時(shí)代 沒有人能打敗趨勢(shì)憔辫,順勢(shì)而為...
    吃飽了混閱讀 448評(píng)論 0 0