#10 Java程式設計新手教學 - 猜數字遊戲

Поделиться
HTML-код
  • Опубликовано: 18 ноя 2024

Комментарии • 102

  • @miloct2411
    @miloct2411 7 лет назад

    @TCC The Developer
    您過往的留言有提及:只要在猜中時的條件判斷區塊內產生新的亂數並乘以1000後指定給原本的區域變數應是可行的~
    我在最後猜中的部份加了(我是以乘100來做)。
    else
    {
    System.out.println("Bingo");
    number2 *= 100;
    }
    我遇到的問題是
    1.當我把number2列印出來的話 在乘上100 那範圍就不是原本1-100的範圍(假設答案是20*100 =2000了)
    2.要如何把這裏面的值指定給原本的區域變數
    感謝您的教學,很有幫助。

  • @yuanhangyu9678
    @yuanhangyu9678 9 лет назад +11

    您好, 個人非常喜歡您的JAVA影音教學. #1 ~ #10都已聽完成, 何時才有新的JAVA進階影音教學檔案上架? 真的很迫不及待的想要持續學習您的教學內容, 感謝您!!

    • @TCCTheDeveloper
      @TCCTheDeveloper  9 лет назад +4

      Garry Yu 您好! 非常高興您喜歡我的教學! 初次學習拍攝教學片仍有許多未盡之處還請日後多多海涵。目前固定會在每周的禮拜二到四之間上傳一部~

  • @zerocooljosen
    @zerocooljosen 6 лет назад

    最近覺得需要來學一下寫程式
    感覺這個教學真的蠻詳細的!!!
    以下是我的方法
    import java.util.Scanner;
    public class class01
    {
    public static void main(String[] args)
    {
    while(true)
    {
    int i = (int)(Math.random()*1100)+(-100);
    Scanner scanner = new Scanner(System.in);
    while(true)
    {
    int guess = scanner.nextInt();

    if(i < guess)
    {
    System.out.println("too large!!");
    }
    else if(i > guess)
    {
    System.out.println("too small!!");
    }
    else
    {
    System.out.println("BINGO!!");break;
    }
    }
    }
    }
    }

  • @張竣凱-e1g
    @張竣凱-e1g 9 лет назад +4

    謝謝你太棒了,讓我有前進的動力

  • @好好先生-h3w
    @好好先生-h3w 9 лет назад

    视频真的非常用心,非常感谢主播的分享。

  • @王學聖-q4p
    @王學聖-q4p 8 лет назад +5

    如果要限制完的次數,剛好可以運用之前所教的1加到10的方法!!

  • @blackdark3826
    @blackdark3826 4 года назад +1

    這樣可以嘛ww
    import java.util.Scanner;
    public class GuessANumber
    {
    public static void main(String[] args )
    {
    System.out.println("Guess a number!!1~100");

    Scanner scanner = new Scanner(System.in);

    float number = (float)Math.random();
    number *= 100.0f;

    int number2 = (int)number;

    boolean type = true;

    while(type)
    {
    int guess = scanner.nextInt();

    if(guess == 0)
    {
    System.out.println("OK, you don,t want to guess...");
    type = false;
    }
    else if(guess > number2)
    {
    System.out.println("too large!!");
    }
    else if(guess < number2)
    {
    System.out.println("too small!!");
    }
    else
    {
    System.out.println("yes, it's "+number2+", try again!");
    number = (float)Math.random();
    number *= 100.0f;
    number2 = (int)number;
    }
    }
    }
    }

  • @Nanashi_Panda
    @Nanashi_Panda 8 лет назад +6

    可以控制亂數的範圍嗎?

  • @jstch7823
    @jstch7823 3 года назад

    老師很力害

  • @陳家齊-p6m
    @陳家齊-p6m 4 года назад +1

    好棒 教得很得體

  • @dixonludovic
    @dixonludovic 3 года назад

    老師的聲音好好聽

  • @yirueilu1167
    @yirueilu1167 9 лет назад +1

    真的非常感謝您的用心!這些影片讓我有信心繼續學習。
    另外想問一下最後提到的兩個問題,
    第一個是 猜到就停止執行,我用break;
    第二個是 猜到之後要產生新的亂數繼續猜,
    第二個可以提示一下嗎?
    直接產生新的亂數指定到原本的區域變數為何不行呢?

    • @TCCTheDeveloper
      @TCCTheDeveloper  9 лет назад

      +盧奕叡 可以的喔,只要在猜中時的條件判斷區塊內產生新的亂數並乘以1000後指定給原本的區域變數應是可行的~

  • @明樂路
    @明樂路 8 лет назад

    非常好的教學!!謝謝分享!!

  • @qo77qo77
    @qo77qo77 8 лет назад +4

    老師我出運了~~~~~
    我搞了一整晚 重崩潰到在崩潰 最後再跟一個妹子聊天的當下瞬間想到辦法
    1.如何使while回圈內的數字跑完自動結束 答案是在最後的else的System下一行多加上break;
    2.如何使while迴圈跑完後自動執行新的一輪遊戲 答案很簡單我們往往都複雜化了 只要在產生亂數上方再『多加上一個while(true)』,這邊要切記注意自己的{ }是否有打好,別少也別多

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад +2

      老师都还没教这个break,你使用break就没意思了

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад +2

      老师是说叫我们想老师以前教的方法来让他停

  • @吳欣翰-z1y
    @吳欣翰-z1y 9 лет назад

    你好^.^!很喜歡你的教學方式,原本覺得學習程式是一件不太可能的事情,看過你的教學影片後讓我慢慢覺得或許我也有可能學得會^.^!
    然後你在後面有提到說讓程式可以在找到答案後可以END跳出程式
    我用的方法是在while裡面加一條if break;不知道這個方法算不算是正確的方法,因為這是我從C語言的書上翻來的^.^!

    • @TCCTheDeveloper
      @TCCTheDeveloper  9 лет назад +3

      吳欣翰 很高興您踏入了程式設計這塊擁有無限可能的領域!
      另外,您使用的方法是正確的!程式沒有對錯,只有能不能達成目的,以及達成目時使用的手段的優劣而已。Java有很多語法跟C&C++雷同,能自己找到break的語法相當值得稱讚

    • @高義鈞-c7b
      @高義鈞-c7b 9 лет назад

      +吳欣翰 cool

  • @今世贱人
    @今世贱人 7 лет назад +1

    请问这样写对吗
    import java.util.Scanner;
    public class Hey
    {
    public static void main(String[] args)
    {
    float number = (float)Math.random();
    number *= 1000.0f;
    int number2 = (int)number;
    Scanner game = new Scanner(System.in);
    while(true)
    {
    int guess = game.nextInt();
    if(guess < number2)
    {
    System.out.println("too small!");
    }
    else if(guess > number2)
    {
    System.out.println("too big!");
    }
    else
    {
    System.out.println("good!");break;
    }
    }
    }
    }

  • @beaugu8927
    @beaugu8927 3 года назад

    只會停住可是怎樣才重新開始是在While 弄一個迴圈嗎?

  • @御芊凜-j1p
    @御芊凜-j1p 6 лет назад

    TCC Th
    寫了一樣的程式 但是怎麼執行亂數都只能是0 @@ 求解MO口OM
    import java.util.Scanner;
    public class TEST2
    {
    public static void main (String[]args)
    {
    float number = (float)Math.random();
    number *= 1000.0f;
    int number2 = (int)number;
    Scanner scanner = new Scanner(System.in);
    while(true)
    {
    int guess = scanner.nextInt();
    if (guess > number2)
    {
    System.out.println("too large!");
    }
    else if (guess < number2)
    {
    System.out.println("too small!");
    }
    else
    {
    System.out.println("Bingo!");
    break;
    }
    }
    }
    }

  • @sunnykaooooo
    @sunnykaooooo 8 лет назад +1

    老師請問你這個亂數的範圍是0~1000還是0~999?
    因為您在影片中有提到Math.random是0~1之間的數,是有小數點的,如果Math.random不包含1
    那麼這個亂數的範圍就是0~999囉?

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      X〉0 X〈1

    • @asiaboy3289
      @asiaboy3289 3 года назад

      是0-999沒錯 random只會小於1 乘1000再取整也就不可能會是四位數

  • @饅饅來
    @饅饅來 8 лет назад

    請問輸入的質不小心是中文字的話
    要怎麼修改?
    ((打完之後我試了一下英文和中文...結果出現錯誤

  • @dorimoed295
    @dorimoed295 7 лет назад

    好棒啊,支持~

  • @john-1103gogo
    @john-1103gogo 9 лет назад

    大大您好,請問
    若要在Binggo後就結束,我能在while()內輸入quess!=number2嗎
    這樣只要一等於就不成立,就不會跑了不是嗎
    可是我試過了,它顯示錯誤,請問這原因是??

    • @TCCTheDeveloper
      @TCCTheDeveloper  9 лет назад

      +陳品翰 注意guess是宣告在while迴圈內,這樣這個變數可以使用的範圍只有在while的大括號裡,若要能在while的小括號中使用guess則guess必須宣告在while迴圈外。
      請參考
      ruclips.net/video/huiuPYsuEz4/видео.html

  • @陳韋廷-c8q
    @陳韋廷-c8q 3 года назад

    不好意思 請教一下!! 在研究 遊戲結束後 重新開始 找到了一個語法叫continue 但為甚麼 重跑後 電腦的數字會跟前一輪一樣呢??

    • @陳韋廷-c8q
      @陳韋廷-c8q 3 года назад

      import java.util.Scanner;
      public class hey
      {
      public static void main(String[] args)
      {

      float computernumber = (float)Math.random();
      computernumber *=100.0f;
      while(true)
      {
      int computernumber2 = (int)computernumber;
      Scanner scanner = new Scanner(System.in);

      int clientguess = scanner.nextInt();
      if(clientguess > computernumber2)
      {
      System.out.println("大");
      }
      else if(clientguess < computernumber2)
      {
      System.out.println("小");
      }
      else
      {
      System.out.println("答對");
      }
      if(clientguess == computernumber2)
      {
      continue;
      }
      }



      }
      這邊是我的改法!! 新手 麻煩各位指導!!!

  • @索隆琦棟
    @索隆琦棟 9 лет назад

    您好!我在執行時,在第12行Scanner scanner = new Scanner(System.in);出現錯誤,跟您教學畫面上的錯誤符號一樣,但我執行後卻跑不出結果畫面(沒辦法讓我輸入東西)。只是告訴我有一個錯誤~~~我該如何??謝謝您

    • @索隆琦棟
      @索隆琦棟 9 лет назад

      +鬼斬索隆
      我剛剛另外設一個檔名但程式一模一樣,結果OK了!會是檔名用MATH01的關係嗎?但是MATH01也不是JAVA的保留字~~

    • @leechris3097
      @leechris3097 8 лет назад +1

      +索隆琦棟 我記得是Scanner 需要另外加一行 版主打完有個小動作 讓第一行多了 import 的東西 沒做那個我記得Scanner沒辦法正確成立 #有誤麻煩糾正QQ

  • @liang8247
    @liang8247 5 лет назад

    猜對重新隨機數字重新開始
    import java.util.Scanner;
    public class HEY
    {
    public static void main(String[] args)
    {
    while(true)
    {
    float number=(float)Math.random();
    number*=1000f;

    int number2 = (int)number;

    Scanner scanner = new Scanner(System.in);

    while(true)
    {
    int player = scanner.nextInt();

    if(player>number2)
    {
    System.out.println("too large");
    }
    else if(player

  • @J41302059
    @J41302059 9 лет назад +1

    把那個else bingo放到while迴圈外面 就可以結束了....

  • @居然居
    @居然居 8 лет назад +4

    在BINGo下面家個break;,就可以跳出迴圈了.

    • @TCCTheDeveloper
      @TCCTheDeveloper  8 лет назад

      +居然居 沒錯,這是個很簡潔的方法!

    • @居然居
      @居然居 8 лет назад

      +D01phiN 大大假如我在產生亂數之前在家個while(true)迴圈,好像就可以猜到後一職再玩下去,是這樣嗎?((剛剛完猜到後他會變數字讓你繼續玩
      還有一件事就是break他的用法與定義
      他會跳出幾層迴圈??,或是其他定義,求大大賜教
      (順便請教continue用法)

    • @qo77qo77
      @qo77qo77 8 лет назад

      +居然居 我有試過您的方式 我發現比如電腦預設的答案是8 我們設定她只能重1~10;
      他可能在7的時候會說太大
      您的不會麼

  • @EmersonHuang
    @EmersonHuang 8 лет назад

    請問我寫成這樣,有顯示錯誤,但是能正常運作,這樣是正常嗎?
    另外顯示bingo後還能繼續猜,是不是代表程式沒結束?
    import java.util.Scanner;
    public class guess
    {
    public static void main (String[] arge)
    {
    float number = (float)Math.random(); //產生0~1的任一小數
    number *= 1000.0f;
    int number2 = (int)number;
    Scanner scanner = new Scanner(System.in);
    while (scanner > number2)
    {
    int guess = scanner.nextInt();
    if(guess > number2)
    {
    System.out.println("too large.");
    }
    else
    {
    while (scanner < number2)
    {
    if(guess < number2)
    {
    System.out.println("too small.");
    }
    else{
    System.out.println("Bengo");}}}}}}

    • @mollytov2325
      @mollytov2325 7 лет назад

      bingo 那行 下面再+1行 break ; 應該就可以停了

    • @mollytov2325
      @mollytov2325 7 лет назад

      再想想停了之後該怎麼在猜一次新的一輪看看

  • @柯基-m7q
    @柯基-m7q 9 лет назад

    請教一下, 為何把第16行 int guess = scan.nextInt(); 搬到while ()迴圈外(13行),會變成無窮迴圈?

    • @TCCTheDeveloper
      @TCCTheDeveloper  9 лет назад +2

      +基福 這是一個很好的問題,因為nextInt()這個東西的功能便是在讀取使用者的輸入,在使用者還沒按下enter前程式就會一直卡在scan.nextInt()這裡,若將此行移到迴圈外,在使用者輸入完後程式便永遠沒有停止的點了。

    • @柯基-m7q
      @柯基-m7q 9 лет назад

      +D01phiN 懂了. 謝謝 !

  • @yichang789
    @yichang789 8 лет назад +1

    如果用for迴圈的範圍來用Math.random()不重複的話
    要怎麼寫呢

    • @TCCTheDeveloper
      @TCCTheDeveloper  8 лет назад

      +卓奕昌 請問您的意思是如何使用for迴圈替代掉教學中使用的while迴圈嗎?

    • @yichang789
      @yichang789 8 лет назад

      我想製作撲克牌 用FOR迴圈 WHILE迴圈也想過 差在碰到重複到的話 該如何用contunie燙過

    • @TCCTheDeveloper
      @TCCTheDeveloper  8 лет назад

      +卓奕昌 是假設撲克牌有52張,現在想隨機抽牌,但已經抽到的牌不可再次抽到是嗎?

    • @yichang789
      @yichang789 8 лет назад

      +D01phiN 是的

    • @TCCTheDeveloper
      @TCCTheDeveloper  8 лет назад

      +卓奕昌 若您會使用陣列的話,最簡單的方式為使用另一個boolean陣列來記錄不同數字是否已經出現過,若出現過則紀錄為true,反之為false;每次抽牌都先確認該數字是否出現過,若已出現則直接在抽下一張牌,直到該數字未抽出過為止。

  • @under979
    @under979 6 лет назад

    加function break 就會停

  • @sunnykaooooo
    @sunnykaooooo 8 лет назад +10

    跳出迴圈這是我的解法~
    public static void main(String[] args)
    {
    float number = (float)Math.random();
    number *= 1000.0f;
    int number2 = (int)number;
    int results = 1; //設一個變數,為了是要BINGO時跳出迴圈
    Scanner scanner = new Scanner(System.in);
    while(results == 1) //條件results==1時,進入while迴圈
    {
    int guess = scanner.nextInt();
    if(guess > number2)
    {
    System.out.println("too large!");
    }
    else if (guess < number2)
    {
    System.out.println("too small!");
    }
    else
    {
    results++; //BINGO時results++,跳出迴圈
    }

    }
    System.out.println("BINGO!!");
    }

    • @fuyu_no_yuki
      @fuyu_no_yuki 6 лет назад

      聰明喔~~~我竟然沒想到

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      import java.util.Scanner;
      public class Hey2
      {
      public static void main(String[]args)
      {
      float number =(float)Math.random();
      number *= 1000.0f;

      int number2 =(int) number;

      int result = 1;


      Scanner scanner = new Scanner(System.in);

      while(result == 1)
      {
      int guess = scanner.nextInt() ;

      if(guess >number2)
      {
      System.out.println("big");
      }
      else
      {
      if(guess

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      参考了他的答案改良了一下,这个可以停止继续scanner写答案、

    • @pp0937321948
      @pp0937321948 2 года назад

      這個方法以後會常用,但這裡直接在bingo下一行寫Break;就可以跳出迴圈了。

  • @Nanashi_Panda
    @Nanashi_Panda 7 лет назад

    怎麼用「wait」

  • @leyun._.00
    @leyun._.00 6 лет назад

    要聽停止的話,可以把while 裡面改(! (guess == number))嗎? 我剛學所以不太懂”‘

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      你要自己去试阿

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      只要你的程序里面成功就可以了,不管什么方法。。。因为方法有很多很多

  • @changjoe7276
    @changjoe7276 4 года назад

    請教老師:Scanner scanner = new Scanner(System.in); System.in裡面的in不會變成藍色斜線。

    • @吳忠保
      @吳忠保 3 года назад

      try import Scanner
      hover your mouse over "Scanner"

  • @寶寶-d7j
    @寶寶-d7j 8 лет назад

    他寫說:錯誤: 找不到或無法載入主要類別 Hey

  • @broytingaravsol
    @broytingaravsol 6 лет назад +1

    其實不太懂為什麼要多寫true,整個被執行的區塊裡都只是做比較就好,應該不用考慮到什麼東西的真假吧?

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      如果没有true,就没办法一直执行,需要自己按新的执行,这样电脑默认的数值就改变了

    • @pkmonunt9375
      @pkmonunt9375 5 лет назад

      永远没办法binggo

  • @broytingaravsol
    @broytingaravsol 6 лет назад

    還是有可能玩家第一次就猜到數字吧,只是機率上相對高低的分別而已

  • @NeVeRgOnNaGiVEUup123
    @NeVeRgOnNaGiVEUup123 7 лет назад

    是不是要關掃描器@@

  • @lamys12sing1
    @lamys12sing1 5 лет назад

    import java.util.Scanner;
    public class Hey3
    {
    public static void main(String[] args)
    {
    String word = "let guess the number!";
    System.out.println(word);

    while(true)
    {
    float number = (float)Math.random();
    number *= 1000.0f;

    int chosen = (int)number;
    int number1 = 1;

    Scanner scanner = new Scanner(System.in);

    while(number1 == 1)
    {
    int guess = scanner.nextInt();

    if(guess > chosen)
    {
    System.out.println("too large!");
    }
    else if(guess < chosen)
    {
    System.out.println("too small!");
    }
    else
    {
    System.out.println("bingo!");
    number1++;
    }

    }
    }
    }
    }

  • @benwong3167
    @benwong3167 9 лет назад

    您好,大大,我是一個JAVA的菜鳥
    有個問題想問一問
    如何可以在條件中寫一個範圍
    例如if(3

    • @张天翼-c8o
      @张天翼-c8o 9 лет назад +2

      +Lay Wong 有两个数或者一个范围的时候要用and或者or连接,and是这个( && ),or是这个( || ),举个例子就是if(a>6 || a6 && a

  • @徐安彤-u9o
    @徐安彤-u9o 9 лет назад

    你好,我打了while(true)后执行为什么会出现
    456
    too large
    too large
    too large
    too large
    too large
    .....不断地出现?

    • @dr-a90n
      @dr-a90n 8 лет назад

      大概是你的while迴圈包在if外面但沒有包到輸入,這樣他會一直用你第一次的數字來判斷,就不會停止。

  • @seven224664
    @seven224664 7 лет назад

    import java.util.*;
    public class Test{
    public static void main (String[]args){
    float num = (float)Math.random();
    num = num * 1000.0f;
    //System.out.println(num);
    int num2 = (int)num;
    Scanner scanner = new Scanner(System.in);
    int a = 0;
    while(num2 !=a){
    int ans = scanner.nextInt();
    a = ans;
    if(num2 < ans){
    System.out.println("太大了");
    }
    else if(num2 >ans){
    System.out.println("太小了");
    }
    else{
    System.out.println("good");
    }
    }
    }
    }

  • @pp0937321948
    @pp0937321948 2 года назад

    Break

  • @今世贱人
    @今世贱人 7 лет назад

    想请问tcc 为什么我在bingo下一行加了break;却还是没有停止的?,不好意思,我是看你的影片才接触java编程的新手

    • @zhikuan0322
      @zhikuan0322 4 года назад +1

      你加break;之後只是跳出迴圈,但是while的()裡面一樣還是true,只要還是true,他在怎麼樣都會執行,你可以使用這樣
      boolean start = true;
      while(start == true){
      int guess = scanner.nextInt();
      if(guess > number2){
      System.out.prinln("too large")
      }else if(guess < number2){
      System.out.prinln("too small")
      } else {
      System.out.println("Bingo")
      start = false;
      }
      System.out.print("Game Over");
      }
      這樣執行到Bingo的時候,就會把start改成false那迴圈就不會繼續執行

  • @蘇家駒-x5w
    @蘇家駒-x5w 9 лет назад

    我else if 和else一直說那是錯的

  • @careylin1913
    @careylin1913 7 лет назад

    為何常常無法執行寫完的程式?

  • @劉育辰-h6g
    @劉育辰-h6g 8 лет назад

    請問我要如何指定這個亂數的值呢? 例如我要0到20

    • @uw5186
      @uw5186 8 лет назад +2

      應該就是把number *= 1000.0f; 改成number *= 20.0f; 就可以了吧

    • @danielaptg
      @danielaptg 5 лет назад

      @@uw5186 是的,如果是要定在-0-20之間,就是做number *= 20.0f,即可

  • @noel77543
    @noel77543 8 лет назад

    老師,及各位學長姐請問一下這樣的程式碼哪裡有錯嗎?
    怎麼我在eclipse上面都無法運行呢?可是...系統並沒有告訴我哪裡有錯誤呀.........
    求救..
    以下是這次教學中跟老師學習的寫法可是....
    .
    import java.util.Scanner;
    public class go {
    public static void main(String[] args){
    float a1 =(float) Math.random();
    a1*= 1000.0f;
    int a2 = (int)a1;
    Scanner scanner = new Scanner(System.in);
    String z = "Let's play a game to guess number!";
    String x = "It's too large.....keep guess~";
    String c ="It's too small....come on ~ Don't give up!";
    String v = "Good job!it's correct answer!!";
    while(true){
    int g = scanner.nextInt();
    System.out.println(z);
    if(g>a2){
    System.out.println(x);
    }
    else if(g

  • @teancyliao1506
    @teancyliao1506 4 года назад +1

    請問如果要讓遊戲自動重新開始 需要怎麼寫呢?

  • @cy-vl5lh
    @cy-vl5lh 8 лет назад

    請問第七行為什麼不能直接寫成 int number = (int)Math.ramdom();

    • @choonleeyan2902
      @choonleeyan2902 8 лет назад

      這樣會變零

    • @yizhang2831
      @yizhang2831 5 лет назад +1

      因為Math.random的範圍是0~1,但不等於1,所以是0.154616等等,double轉int就只取整數,所以會變成0,如果你要求1~9就*10,1~100就*100+1,以此類推