การแยกตัวเลขจากข้อมูลนำเข้า
แปลงข้อความเป็นตัวเลข
การแยกตัวเลขจากข้อมูลนำเข้า เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
บรรทัดเป็นข้อความเสมอ
readLine() จะให้ String เสมอ แม้ผู้ใช้จะพิมพ์ 42 ก็ตาม หากต้องการคำนวณ คุณต้องแปลงข้อความนั้นให้เป็นตัวเลข
Java มีเมธอดตัวช่วย เช่น Integer.parseInt และ Double.parseDouble สำหรับงานนี้โดยเฉพาะ
Integer.parseInt
Integer.parseInt(String) แปลงข้อความอย่าง "42" ให้เป็นค่า int ที่มีค่าเท่ากับ 42
เมื่อแปลงค่าแล้ว คุณสามารถนำไปบวก คูณ หรือเปรียบเทียบได้เหมือนตัวเลขทั่วไป
String text = "42";
int n = Integer.parseInt(text);
System.out.println(n + 1);ตัวอย่างการแปลงค่าที่รันได้
นี่คือโปรแกรมฉบับสมบูรณ์ที่รันได้ โดยแปลงสตริงที่กำหนดตายตัวแล้วคูณค่านั้นด้วยสอง
โปรแกรมนี้ไม่ได้อ่านข้อมูลจาก System.in จึงทำงานทันทีและแสดงผลลัพธ์
public class Main {
public static void main(String[] args) {
String text = "21";
int n = Integer.parseInt(text);
System.out.println("Doubled: " + (n * 2));
}
}อ่านแล้วแปลงค่า
รูปแบบการใช้งานจริงคือ อ่านหนึ่งบรรทัดแล้วแปลงค่า โปรแกรมนี้อ่านตัวเลขหนึ่งตัวจากคอนโซลแล้วแสดงกำลังสองของตัวเลขนั้น
เนื่องจากโปรแกรมรอข้อมูลจาก System.in จึงไม่สามารถรันอัตโนมัติที่นี่ได้ แต่เป็นรูปแบบที่ใช้กันในชีวิตประจำวัน
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
System.out.println("Square: " + (n * n));
}
}ตัดช่องว่างก่อนแปลงค่า
ช่องว่างเกินทำให้การแปลงค่าล้มเหลว Integer.parseInt(" 42 ") จะโยนข้อผิดพลาด แต่ Integer.parseInt(" 42 ".trim()) ทำงานได้
ควรฝึกเรียกใช้ trim() กับบรรทัดก่อนแปลงค่า
String raw = " 7 ";
int n = Integer.parseInt(raw.trim());
System.out.println(n);การแปลงเลขทศนิยม
สำหรับเลขทศนิยม ให้ใช้ Double.parseDouble ซึ่งจะแปลงข้อความอย่าง "3.14" ให้เป็น double
นอกจากนี้ยังมี Long.parseLong สำหรับจำนวนเต็มขนาดใหญ่มากที่เกินช่วงของ int
public class Main {
public static void main(String[] args) {
double pi = Double.parseDouble("3.14");
System.out.println(pi * 2);
}
}ตัวเลขหลายตัวในบรรทัดเดียว
บ่อยครั้งที่หนึ่งบรรทัดมีตัวเลขหลายตัวคั่นด้วยช่องว่าง เช่น "10 20 30" ใช้ split(" ") เพื่อแยกบรรทัดออกเป็นอาร์เรย์ของส่วนข้อมูล String
จากนั้นจึงแปลงส่วนข้อมูลแต่ละรายการทีละรายการ
String[] parts = "10 20 30".split(" ");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1]);
System.out.println(a + b);การหาผลรวมของตัวเลขที่แยกแล้ว
โปรแกรมที่รันได้นี้แยกบรรทัดแล้วบวกตัวเลขทั้งหมดเข้าด้วยกันภายในการวนซ้ำ
สตริงถูกกำหนดตายตัว จึงรันได้โดยไม่ต้องมีข้อมูลเข้า แต่หากใช้งานกับคอนโซลจริง ให้เปลี่ยนมาใช้ br.readLine()
public class Main {
public static void main(String[] args) {
String line = "5 8 2 10";
String[] parts = line.split(" ");
int sum = 0;
for (String p : parts) {
sum += Integer.parseInt(p);
}
System.out.println("Sum: " + sum);
}
}ข้อมูลเข้าไม่ถูกต้องทำให้เกิดข้อผิดพลาด
หากข้อความไม่ใช่ตัวเลขที่ถูกต้อง เช่น "hello" หรือสตริงว่าง parseInt จะโยน NumberFormatException
คุณสามารถป้องกันกรณีนี้ด้วย try/catch เพื่อไม่ให้โปรแกรมหยุดทำงานเมื่อได้รับข้อมูลเข้าที่ไม่ถูกต้อง
try {
int n = Integer.parseInt("hello");
} catch (NumberFormatException e) {
System.out.println("Not a number!");
}การแปลงค่าอย่างปลอดภัยในการทำงาน
นี่คือโปรแกรมที่รันได้และจัดการข้อมูลเข้าที่ไม่ถูกต้องอย่างเหมาะสมแทนที่จะหยุดทำงาน
บล็อก catch จะแสดงข้อความที่เข้าใจง่ายเมื่อไม่สามารถแปลงข้อความให้เป็นตัวเลขได้
public class Main {
public static void main(String[] args) {
String input = "12x";
try {
int n = Integer.parseInt(input);
System.out.println(n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + input);
}
}
}รายการตรวจสอบการแปลงค่า
เมื่อเปลี่ยนข้อมูลเข้าให้เป็นตัวเลข:
- ใช้
Integer.parseIntสำหรับจำนวนเต็ม และDouble.parseDoubleสำหรับเลขทศนิยม - ใช้
trim()เพื่อตัดช่องว่างเกินออกก่อน - ใช้
split(" ")สำหรับตัวเลขหลายตัวในหนึ่งบรรทัด - ครอบด้วย
try/catchเพื่อความปลอดภัย
การตรวจสอบอย่างรวดเร็ว
พิจารณาว่าจะเกิดอะไรขึ้นเมื่อการแยกวิเคราะห์ล้มเหลว
ทบทวน
คุณได้เรียนรู้ว่าบรรทัดข้อมูลเข้าเป็นสตริงที่ผ่านการแยกวิเคราะห์ด้วย Integer.parseInt หรือ Double.parseDouble คุณได้ใช้ trim() และ split(" ") และดักจับ NumberFormatException เพื่อความปลอดภัย
ถัดไป: การปิดกระแสข้อมูลอย่างถูกวิธี
คำถามที่พบบ่อย
บทเรียน “การแยกตัวเลขจากข้อมูลนำเข้า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแยกตัวเลขจากข้อมูลนำเข้า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแยกตัวเลขจากข้อมูลนำเข้า”
แปลงข้อความเป็นตัวเลข คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การแยกตัวเลขจากข้อมูลนำเข้า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุผลที่ใช้ BufferedReader
- การอ่านทีละบรรทัด
- การแยกตัวเลขจากข้อมูลนำเข้า
- การปิดสตรีมอย่างปลอดภัย