แปลงเลขฐาน 10 เป็นเลขฐาน 8
โจทย์
รับค่าเลขฐาน 10 แล้วแปลงออกมาเป็นเลขฐาน 8 โดยไม่ใช้เมธอด Integer.toOctalString()
| Input | Output |
|---|---|
| 147 | 223 |
| 2 | 2 |
| 8 | 10 |
| 2147483647 | 17777777777 |
โค้ด
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ยังมากกว่า 0divisionAnswer = base10Number / 8คือการหารbase10Numberด้วย 8 แล้วเก็บผลลัพธ์ไว้remainder = base10Number % 8คือการหาเศษจากการหารด้วย 8base10Number = divisionAnswerคือการอัพเดทค่าbase10Numberเป็นผลลัพธ์จากการหารbase8Number = remainder + base8Numberคือการนำเศษที่ได้มาต่อหน้าผลลัพธ์เดิม
เปรียบเสมือนการแบ่งขนมให้เพื่อน 8 คนไปเรื่อย ๆ แล้วจดว่าแต่ละครั้งมีขนมเหลือกี่ชิ้น จนกว่าจะไม่สามารถแบ่งได้อีก
ขั้นตอนที่ 8: การแสดงผลลัพธ์
System.out.println(base8Number.isEmpty() ? "0" : base8Number);- นี่คือการแสดงผลลัพธ์เลขฐานแปดที่เราได้
- ถ้า
base8Numberว่างเปล่า (กรณีที่ตัวเลขเริ่มต้นเป็น 0) เราจะแสดง “0” - ถ้าไม่ว่างเปล่า เราจะแสดงค่าที่แปลงได้
- เปรียบเสมือนการอ่านคำตอบที่เราจดไว้บนกระดาษให้ทุกคนฟัง
ปรับปรุงล่าสุด