Skip to Content
CoursesCSC102ใครจะกินโคล่าเป็นคนสุดท้าย

ใครจะกินโคล่าเป็นคนสุดท้าย

โจทย์

กติกาเกม

  1. มีคนเล่น 2 คน (A และ B)

  2. แต่ละรอบ คนเล่นจะดื่มโคล่าสลับกันไปเรื่อยๆ

  3. จำนวนโคล่าที่ดื่มในแต่ละรอบจะเพิ่มขึ้นเรื่อยๆ ตามตารางนี้:

    คนดื่มครั้งที่ 1ดื่มครั้งที่ 2ดื่มครั้งที่ 3ดื่มครั้งที่ 4ดื่มครั้งที่ 5ดื่มครั้งที่ n
    คนดื่มก่อน13 47 8 913 14 15 1621 22 23 24 25
    คนดื่มหลัง25 610 11 1217 18 19 2026 27 28 29 30
  4. เกมจะจบลงเมื่อมีคนดื่มโคล่าครบตามจำนวนที่กำหนด

InputOutput
A
20
B

โค้ด

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); char firstPerson = scanner.next().charAt(0); char secondPerson = firstPerson == 'A' ? 'B' : 'A'; int totalCola = scanner.nextInt(); int n = 1; int tracking = 1; while (tracking <= totalCola) { for (int i = 1; i <= n; i++) { if (tracking == totalCola) { System.out.println(firstPerson); } tracking++; } for (int i = 1; i <= n; i++) { if (tracking == totalCola) { System.out.println(secondPerson); } tracking++; } n++; } } }

คำอธิบาย

ขั้นตอนที่ 1: การนำเข้าไลบรารีและสร้างคลาส

import java.util.Scanner; public class Main { public static void main(String[] args) { // โค้ดหลักจะอยู่ในนี้ } }
  • เราเริ่มด้วยการนำเข้า Scanner เพื่อรับข้อมูลจากผู้ใช้
  • สร้างคลาส Main และเมธอด main ซึ่งเป็นจุดเริ่มต้นของโปรแกรม

ขั้นตอนที่ 2: การรับข้อมูลนำเข้า

Scanner scanner = new Scanner(System.in); char firstPerson = scanner.next().charAt(0); char secondPerson = firstPerson == 'A' ? 'B' : 'A'; int totalCola = scanner.nextInt();
  • สร้าง scanner เพื่อรับข้อมูล
  • รับตัวอักษรแรก (A หรือ B) เพื่อกำหนดว่าใครเป็นคนดื่มก่อน
  • กำหนดตัวอักษรของคนดื่มหลังโดยใช้ ternary operator
  • รับจำนวนโคล่าทั้งหมดที่จะดื่ม

ขั้นตอนที่ 3: การเตรียมตัวแปร

int n = 1; int tracking = 1;
  • n เป็นตัวแปรที่ใช้กำหนดจำนวนโคล่าที่แต่ละคนจะดื่มในแต่ละรอบ
  • tracking ใช้นับจำนวนโคล่าที่ดื่มไปแล้วทั้งหมด

ขั้นตอนที่ 4: การจำลองการดื่มโคล่า

while (tracking <= totalCola) { // โค้ดสำหรับการดื่มของทั้งสองคน }
  • ใช้ลูป while เพื่อดำเนินการจนกว่าจะดื่มโคล่าครบตามจำนวน

ขั้นตอนที่ 5: การดื่มของคนแรก

for (int i = 1; i <= n; i++) { if (tracking == totalCola) { System.out.println(firstPerson); } tracking++; }
  • คนแรกดื่มโคล่าจำนวน n ขวด
  • เพิ่มค่า tracking ทุกครั้งที่ดื่ม
  • ถ้า tracking เท่ากับ totalCola แสดงว่าคนแรกเป็นคนดื่มขวดสุดท้าย

ขั้นตอนที่ 6: การดื่มของคนที่สอง

for (int i = 1; i <= n; i++) { if (tracking == totalCola) { System.out.println(secondPerson); } tracking++; }
  • คนที่สองดื่มโคล่าจำนวน n ขวดเช่นกัน
  • ตรวจสอบเช่นเดียวกับคนแรก

ขั้นตอนที่ 7: การเพิ่มจำนวนโคล่าในแต่ละรอบ

n++;
  • เพิ่มค่า n เพื่อให้ในรอบถัดไป แต่ละคนดื่มโคล่ามากขึ้น

ตัวอย่างการทำงาน

สมมติว่าเรามีข้อมูลนำเข้าดังนี้:

A 20
  1. A เป็นคนดื่มก่อน, B เป็นคนดื่มหลัง
  2. ต้องดื่มโคล่าทั้งหมด 20 ขวด

ตามตารางที่ให้มา โคล่าขวดที่ 20 จะถูกดื่มโดยคนที่ดื่มหลัง (B) ในรอบที่ 4

ดังนั้น โปรแกรมจะแสดงผลลัพธ์เป็น:

B
ปรับปรุงล่าสุด