Skip to Content
CoursesCSC102แปลงเลขฐาน 10 เป็นเลขฐาน 8

แปลงเลขฐาน 10 เป็นเลขฐาน 8

โจทย์

รับค่าเลขฐาน 10 แล้วแปลงออกมาเป็นเลขฐาน 8 โดยไม่ใช้เมธอด Integer.toOctalString()

InputOutput
147223
22
810
214748364717777777777

โค้ด

import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int base10Number = scanner.nextInt(); String base8Number = ""; while (base10Number > 0) { int divisionAnswer = base10Number / 8; int remainder = base10Number % 8; base10Number = divisionAnswer; base8Number = remainder + base8Number; } System.out.println(base8Number.isEmpty() ? "0" : base8Number); } }

คำอธิบาย

ขั้นตอนที่ 1: การนำเข้าไลบรารี

import java.util.Scanner;
  • บรรทัดนี้เป็นการนำเข้าไลบรารีที่ชื่อว่า Scanner
  • Scanner เป็นเครื่องมือที่ช่วยให้เราสามารถรับข้อมูลจากผู้ใช้ได้
  • เปรียบเสมือนการหยิบเครื่องมือที่เราจะใช้รับฟังคำสั่งจากผู้ใช้มาเตรียมไว้

ขั้นตอนที่ 2: การสร้างคลาส

public class Main { // โค้ดอื่นๆ จะอยู่ในนี้ }
  • class Main คือการสร้างกล่องใหญ่ที่จะเก็บโค้ดทั้งหมดของเรา
  • คิดเหมือนกับการสร้างห้องทำงานที่ชื่อว่า “Main” ที่จะใช้เก็บทุกอย่างที่เราจะทำ

ขั้นตอนที่ 3: การสร้างเมธอดหลัก

public static void main (String[] args) { // โค้ดหลักจะอยู่ในนี้ }
  • นี่คือจุดเริ่มต้นของโปรแกรมของเรา
  • เปรียบเสมือนประตูทางเข้าของห้องทำงาน เมื่อเราเปิดโปรแกรม มันจะเริ่มทำงานจากตรงนี้

ขั้นตอนที่ 4: การสร้างตัวรับข้อมูล

Scanner scanner = new Scanner(System.in);
  • เราสร้างเครื่องมือที่ชื่อว่า scanner เพื่อรับข้อมูลจากผู้ใช้
  • คิดเหมือนกับการเตรียมกระดาษและปากกาไว้พร้อมจดบันทึกสิ่งที่ผู้ใช้จะบอกเรา

ขั้นตอนที่ 5: การรับข้อมูลจากผู้ใช้

int base10Number = scanner.nextInt();
  • เราใช้ scanner เพื่ออ่านตัวเลขฐานสิบที่ผู้ใช้พิมพ์เข้ามา
  • ตัวเลขนี้จะถูกเก็บไว้ในกล่องที่ชื่อว่า base10Number
  • เปรียบเสมือนการถามคำถามกับผู้ใช้ว่า “กรุณาใส่ตัวเลขฐานสิบ” แล้วเราจดตัวเลขนั้นลงในสมุด

ขั้นตอนที่ 6: การเตรียมตัวแปรสำหรับเก็บผลลัพธ์

String base8Number = "";
  • เราสร้างกล่องว่างๆ ที่ชื่อว่า base8Number เพื่อเก็บผลลัพธ์เลขฐานแปด
  • คิดเหมือนกับการเตรียมกระดาษเปล่าไว้เขียนคำตอบ

ขั้นตอนที่ 7: การแปลงเลขฐานสิบเป็นฐานแปด

while (base10Number > 0) { int divisionAnswer = base10Number / 2; int remainder = base10Number % 2; base10Number = divisionAnswer; base8Number = remainder + base8Number; }
  • นี่คือขั้นตอนการแปลงเลขฐานสิบเป็นฐานแปด โดยใช้วิธีการหารด้วย 2 ไปเรื่อยๆ
  • while (base10Number > 0) หมายถึง ทำซ้ำไปเรื่อยๆ ตราบใดที่ base10Number ยังมากกว่า 0
  • divisionAnswer = base10Number / 8 คือการหาร base10Number ด้วย 8 แล้วเก็บผลลัพธ์ไว้
  • remainder = base10Number % 8 คือการหาเศษจากการหารด้วย 8
  • base10Number = divisionAnswer คือการอัพเดทค่า base10Number เป็นผลลัพธ์จากการหาร
  • base8Number = remainder + base8Number คือการนำเศษที่ได้มาต่อหน้าผลลัพธ์เดิม

เปรียบเสมือนการแบ่งขนมให้เพื่อน 8 คนไปเรื่อย ๆ แล้วจดว่าแต่ละครั้งมีขนมเหลือกี่ชิ้น จนกว่าจะไม่สามารถแบ่งได้อีก

ขั้นตอนที่ 8: การแสดงผลลัพธ์

System.out.println(base8Number.isEmpty() ? "0" : base8Number);
  • นี่คือการแสดงผลลัพธ์เลขฐานแปดที่เราได้
  • ถ้า base8Number ว่างเปล่า (กรณีที่ตัวเลขเริ่มต้นเป็น 0) เราจะแสดง “0”
  • ถ้าไม่ว่างเปล่า เราจะแสดงค่าที่แปลงได้
  • เปรียบเสมือนการอ่านคำตอบที่เราจดไว้บนกระดาษให้ทุกคนฟัง
ปรับปรุงล่าสุด