การตรวจสอบข้อมูลนำเข้าจากผู้ใช้
จัดการข้อมูลนำเข้าที่ไม่ถูกต้องอย่างเหมาะสม
การตรวจสอบข้อมูลนำเข้าจากผู้ใช้ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
อย่าไว้ใจข้อมูลป้อนเข้า
ผู้ใช้อาจพิมพ์ข้อมูลผิดได้ เช่น พิมพ์ตัวอักษรแทนตัวเลข ป้อนค่าว่าง หรือป้อนค่าที่อยู่นอกช่วง โปรแกรมที่รัดกุมจะตรวจสอบข้อมูลป้อนเข้าและขอให้ป้อนใหม่แทนที่จะหยุดทำงาน
บทเรียนนี้แสดงรูปแบบการตรวจสอบข้อมูลด้วย Scanner ที่จัดการข้อผิดพลาดอย่างเหมาะสม
ตรวจสอบก่อนอ่าน
วิธีป้องกันที่ง่ายที่สุดคือใช้ hasNextInt() โดยอ่านจำนวนเต็มเฉพาะเมื่อมีจำนวนเต็มอยู่จริง
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42");
if (scanner.hasNextInt()) {
System.out.println("Got: " + scanner.nextInt());
} else {
System.out.println("Please enter a number");
}
scanner.close();
}
}วนซ้ำจนกว่าจะถูกต้อง
การวนซ้ำเพื่อลองใหม่จะขอข้อมูลไปเรื่อย ๆ จนกว่าจะได้รับจำนวนเต็มที่ถูกต้อง เมื่อโทเคนไม่ถูกต้อง ให้ทิ้งด้วย next() แล้วดำเนินการต่อ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc xyz 50");
int value = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
value = scanner.nextInt();
break;
}
scanner.next();
}
System.out.println("Accepted: " + value);
scanner.close();
}
}การตรวจสอบช่วงค่า
นอกเหนือจากประเภทแล้ว ค่าต่าง ๆ มักต้องอยู่ภายในช่วงที่กำหนด อ่านตัวเลขก่อน แล้วตรวจสอบค่าก่อนยอมรับ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("7");
int n = scanner.nextInt();
if (n >= 1 && n <= 10) {
System.out.println("Valid: " + n);
} else {
System.out.println("Out of range");
}
scanner.close();
}
}ใช้ Try-Catch ขณะแปลงข้อมูล
อีกวิธีหนึ่งคืออ่านทั้งบรรทัดแล้วแปลงข้อมูล โดยดักจับ NumberFormatException เมื่อข้อความไม่ถูกต้อง วิธีนี้ทำให้บัฟเฟอร์เรียบง่าย
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("notanumber");
String line = scanner.nextLine();
try {
int n = Integer.parseInt(line.trim());
System.out.println("Parsed: " + n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + line);
}
scanner.close();
}
}ตรวจสอบว่าข้อความไม่ว่าง
สำหรับข้อมูลข้อความ ให้ปฏิเสธค่าว่าง isBlank() จะคืนค่าเป็นจริงสำหรับสตริงที่ว่างหรือมีเฉพาะช่องว่าง
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(" ");
String name = scanner.nextLine();
if (name.isBlank()) {
System.out.println("Name cannot be empty");
} else {
System.out.println("Hello, " + name);
}
scanner.close();
}
}ตรวจสอบตัวเลือก
สำหรับตัวเลือกจากเมนู ให้ยืนยันว่าค่าเป็นหนึ่งในตัวเลือกที่อนุญาตก่อนนำไปใช้งาน
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("y");
String choice = scanner.next().toLowerCase();
if (choice.equals("y") || choice.equals("n")) {
System.out.println("You chose: " + choice);
} else {
System.out.println("Please enter y or n");
}
scanner.close();
}
}เมธอดตรวจสอบที่นำกลับมาใช้ซ้ำได้
แยกตรรกะการตรวจสอบออกมาเป็นเมธอด เพื่อให้นำตรรกะนั้นกลับมาใช้ซ้ำได้ ในที่นี้เมธอดจะตรวจสอบว่าอายุอยู่ในช่วงที่สมเหตุสมผล
public class Main {
static boolean isValidAge(int age) {
return age >= 0 && age <= 120;
}
public static void main(String[] args) {
System.out.println(isValidAge(30));
System.out.println(isValidAge(-5));
}
}การรวมการตรวจสอบประเภทและช่วงค่า
การตรวจสอบข้อมูลจริงมักรวมการตรวจสอบประเภท การตรวจสอบช่วงค่า และการวนซ้ำเพื่อลองใหม่ไว้ในกระบวนการเดียวที่รัดกุม
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc 200 45");
int valid = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n >= 1 && n <= 100) {
valid = n;
break;
}
} else {
scanner.next();
}
}
System.out.println("Final: " + valid);
scanner.close();
}
}ข้อความแจ้งข้อผิดพลาดที่ชัดเจน
การตรวจสอบที่ดีควรให้คำแนะนำตอบกลับที่เป็นประโยชน์แก่ผู้ใช้ด้วย บอกให้ชัดเจนว่าเกิดข้อผิดพลาดอะไรและคาดหวังข้อมูลแบบใด แทนการแจ้งความล้มเหลวแบบกว้าง ๆ
public class Main {
static String validate(String input) {
if (input.isBlank()) return "Input is empty";
if (!input.matches("\\d+")) return "Only digits allowed";
return "OK";
}
public static void main(String[] args) {
System.out.println(validate(""));
System.out.println(validate("12a"));
System.out.println(validate("123"));
}
}กลยุทธ์การตรวจสอบ
ตรวจสอบประเภทด้วยกลุ่มเมธอด hasNext หรือใช้การลองและดักจับข้อผิดพลาด ตรวจสอบช่วงค่าและค่าว่าง วนซ้ำจนกว่าข้อมูลจะถูกต้อง และอธิบายข้อผิดพลาดอย่างชัดเจนเสมอ
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการตรวจสอบข้อมูลป้อนเข้า
ทบทวน
คุณได้เรียนรู้การตรวจสอบข้อมูลป้อนเข้าอย่างเหมาะสมแล้ว:
- ป้องกันข้อผิดพลาดด้วย
hasNextIntหรือแปลงข้อมูลภายในบล็อกลองและดักจับข้อผิดพลาด - ใช้การวนซ้ำเพื่อลองใหม่ โดยทิ้งโทเคนที่ไม่ถูกต้องด้วย
next() - ตรวจสอบช่วงค่าและปฏิเสธข้อความว่างด้วย
isBlank - แยกเมธอดตรวจสอบที่นำกลับมาใช้ซ้ำได้
- แสดงข้อความแจ้งข้อผิดพลาดที่ชัดเจนและเฉพาะเจาะจง
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบข้อมูลนำเข้าจากผู้ใช้” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบข้อมูลนำเข้าจากผู้ใช้” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านข้อมูลนำเข้าด้วย Scanner
- การอ่านตัวเลขและบรรทัด
- การตรวจสอบข้อมูลนำเข้าจากผู้ใช้
- ทางเลือกนอกจาก BufferedReader