Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เชี่ยวชาญ Java User Input: คู่มือครบครันสำหรับ Scanner Class

คลาส Scanner ใช้สำหรับอ่าน user input ใน Java Java Scanner สร้างอยู่ในแพ็กเกจ java.util แล้ว จึงไม่ต้องใช้ไลบรารีภายนอก Scanner อ่านข้อความจาก standard input ข้อความนี้จะถูกส่งคืนไปยังโปรแกรมหลักเพื่อจัดเก็บหรือจัดการต่อ

การเข้าใจวิธีรับ user input ใน Java เป็นทักษะสำคัญ ตัวอย่างเช่น สมมติคุณกำลังสร้างแอปที่มีฟอร์มล็อกอิน คุณจะต้องจัดการ user input เพื่อรวบรวมข้อมูลประจำตัวเข้าสู่ระบบของผู้ใช้

ใน Java คุณสามารถใช้คลาส Scanner เพื่อรับ user input ที่คุณสามารถประมวลผลในโปรแกรมของคุณได้ บทช่วยสอนนี้จะอภิบาย พร้อมตัวอย่างเล็กน้อย ว่าจะใช้ Java Scanner class เพื่อรับ user input อย่างไร

Java Scanner class ใช้สำหรับรวบรวม user input Scanner เป็นส่วนหนึ่งของแพ็กเกจ java.util จึงสามารถ import ได้โดยไม่ต้องดาวน์โหลดไลบรารีภายนอก Scanner อ่านข้อความจาก standard input และส่งคืนไปยังโปรแกรม

เพื่อทำงานกับ Scanner class คุณต้อง import มันเข้ากับโค้ดก่อน มี 2 วิธีทำ:

  1. หากคุณต้องการทำงานกับคลาส java.util.Scanner เท่านั้น คุณสามารถ import Scanner class โดยตรง
  2. หากคุณทำงานกับโมดูลอื่นในไลบรารี java.util คุณอาจต้องการ import ไลบรารีทั้งหมด

โค้ดสำหรับแต่ละวิธีข้างต้น:

import java.util.Scanner; import java.util.*;

บรรทัดแรก import Scanner class บรรทัดที่สอง import ทุกแพ็กเกจในไลบรารี java.util รวมถึง Scanner

值得注意的是ว่ามีวิธีอื่นๆ ในการรับข้อมูล user input ใน Java คุณสามารถใช้ BufferedReader, InputStreamReader, DataInputStream, และ Console classes ของ Java

อย่างไรก็ตาม Scanner class เป็นวิธีที่นิยมที่สุดในการรวบรวม user input ใน Java ดังนั้นเราจะเน้นที่คลาสนี้ในบทความนี้

ไวยากรณ์ Java User Input

คุณสามารถรวบรวม user input โดยใช้ Scanner class Scanner class อ่านข้อความที่ผู้ใช้ป้อนในคอนโซลและส่งข้อความนั้นกลับไปยังโปรแกรม Scanner เป็นวิธีหลักในการรวบรวม Java user input

หลังจาก import Java Scanner class แล้ว คุณสามารถเริ่มใช้มันเพื่อรวบรวม user input นี่คือไวยากรณ์สำหรับ Java Scanner class:

Scanner input = new Scanner(System.in); int number = input.nextInt(); 

ในตัวอย่างนี้ เราสร้างตัวแปรชื่อ input ที่รวบรวมค่าถัดไปที่ผู้ใช้ป้อนในคอนโซล จากนั้นเราสร้างตัวแปรชื่อ number ที่รวบรวมค่าที่ผู้ใช้ส่งในคอนโซล

ตัวอย่าง Java User Input

ตัวอย่าง สมมติเรากำลังสร้างแอปพลิเคชันสำหรับร้านคอมพิวเตอร์ท้องถิ่นที่ติดตามสินค้าคงคลัง

ผู้จัดการขอให้เราสร้างโปรแกรมง่ายๆ ที่เธอสามารถใช้เพื่อเพิ่มรายการในรายการสินค้าคงคลังของร้าน ผู้จัดการต้องการป้อน 2 ค่า: ชื่อสินค้าและจำนวน

นี่คือโค้ดที่เราจะใช้สร้างโปรแกรมนี้:

import java.util.Scanner; class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Product name: "); String product_name = input.next(); System.out.print("Value entered: " + product_name); System.out.print("Quantity: "); int quantity = input.nextInt(); System.out.print("Value entered: " + quantity); } } 

อินพุตแรกที่เรารับคือชื่อสินค้า นี่จะเป็น string เนื่องจากชื่อสินค้าอิงข้อความและใช้ตัวอักษรหลากหลาย ในโค้ดด้านล่าง เรากำหนด string นี้ด้วยโค้ด: String product_name

อินพุตถัดไปคือจำนวนสินค้า นี่จะเป็นตัวเลข ในโค้ดด้านล่าง เรากำหนดตัวเลขนี้ด้วยโค้ด: int quantity โดย int ย่อมาจาก integer

เมื่อเรารันโค้ดและใส่ค่าตัวอย่าง โปรแกรมจะคืนค่าตอบสนองดังนี้:

Product name: 15-inch MacBook Pro 2019

Value entered: 15-inch MacBook Pro 2019

Quantity: 7

Value entered: 7

ตามที่เห็น โปรแกรมของเรารวบรวม user input แล้วคืนค่าที่ผู้ใช้ป้อนกลับไปที่คอนโซล เพื่อให้เรายืนยันได้ว่าโปรแกรมทำงานถูกต้อง

โปรแกรม Scanner Java ของเราทำงานอย่างไร

มาแยกโค้ดทีละขั้นตอน:

  1. เรา import Scanner library เข้าโค้ดเพื่อรับ user input
  2. เราประกาศคลาสชื่อ Main ที่จัดเก็บโค้ดของโปรแกรมเรา
  3. เรา initialize Scanner class โดย Scanner input = new Scanner(System.in); ตัวแปร Java input จัดเก็บ scanner ที่ initialize แล้ว
  4. เราพิมพ์ "Product name: " ไปที่คอนโซลและขอให้ผู้ใช้ส่งชื่อสินค้าโดยใช้ input.next();
  5. เราพิมพ์ชื่อสินค้าที่ผู้ใช้ส่งไปที่คอนโซล
  6. เราพิมพ์ Quantity: ไปที่คอนโซลและแจ้งให้ผู้ใช้ส่งจำนวนสินค้าในสต็อกโดยใช้ input.nextInt();
  7. เราพิมพ์ค่าของตัวแปร quantity ไปที่คอนโซล

สังเกตว่าเราใช้โค้ดต่างกันในการรวบรวมตัวเลขและ strings ตอนเรารวบรวมชื่อสินค้า เราใช้ input.next(); และตอนรวบรวมจำนวนสินค้า เราใช้ input.nextInt();

Java Scanner: ชนิดของ Input

ในตัวอย่างข้างต้น เรารวบรวม 2 ชนิดข้อมูลจากผู้ใช้: string และ integer ตามที่กล่าวไว้ เราต้องใช้โค้ดต่างกันในการรวบรวมชนิดข้อมูลเหล่านี้

ชนิดข้อมูลที่ต่างกัน เช่น strings และ integers ถูกรวบรวมโดยใช้เมธอดแยกกัน ดังนั้น เพื่อรวบรวม boolean คุณจะใช้โค้ดต่างจากการรวบรวม float

นี่คือตารางแสดงเมธอดทั้งหมดที่ใช้รวบรวม user input ใน Java โดยใช้ Scanner class:

MethodType of Value the Method Collects
nextBoolean()boolean
nextByte()byte
nextDouble()double
nextFloat()float
nextInt()int
nextLine()String
nextLong()long
nextShort()short

หากคุณใส่ชนิด input ผิด โปรแกรมจะโยน InputMismatchException ตัวอย่างเช่น หากคุณพยายามใส่ double ลงในฟิลด์ที่รวบรวม Booleans โปรแกรมจะโยน exception

การรวบรวมค่า Boolean

กลับไปที่ร้านคอมพิวเตอร์ สมมติเราต้องการอัปเดตโปรแกรมแรก และอนุญาตให้ผู้จัดการร้านป้อนว่าสินค้าอยู่บนชั้นแสดงหรือเก็บในคลัง

เพื่อทำเช่นนั้น เราต้องการรวบรวมค่าใหม่ชื่อ on_display ที่จะจัดเก็บ input เป็น Boolean เนื่องจากมีได้แค่ 2 ค่า: true หรือ false

นี่คือโค้ดที่เราสามารถใช้รวบรวมข้อมูลนี้:

import java.util.Scanner; class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Product name: "); String product_name = input.next(); System.out.print("Value entered: " + product_name); System.out.print("Quantity: "); int quantity = input.nextInt(); System.out.print("Value entered: " + quantity); System.out.print("On display: "); boolean on_display = input.nextBoolean(); System.out.print("Value entered: " + on_display); } } 

เมื่อเรารันโค้ดและใส่ค่าตัวอย่าง โปรแกรมคืนค่าตอบสนองดังนี้:

Product name: 15-inch MacBook Pro 2019

Value entered: 15-inch MacBook Pro 2019

Quantity: 7

Value entered: 7

On display: true

Value entered: true

โปรแกรมของเราทำงานเหมือนตัวอย่างข้างต้น อย่างไรก็ตาม ครั้งนี้เรารวบรวมค่าเพิ่มเติมจากผู้ใช้: ว่าสินค้าที่พวกเขาใส่ในโปรแกรมอยู่บนชั้นแสดงหรือไม่ เราใช้เมธอด nextBoolean() เพื่อรวบรวมค่านี้จากผู้ใช้ แล้วพิมพ์ค่านั้นไปที่คอนโซล

สรุป

คุณสามารถใช้ Java's Scanner class เพื่อรวบรวม input จากผู้ใช้ Scanner class สามารถรวบรวมหลายชนิดข้อมูลจากผู้ใช้ รวมถึงค่า short, Strings, booleans และอื่นๆ

ในบทช่วยสอนนี้ ใช้ตัวอย่างเล็กน้อย เราสำรวจวิธีใช้ Java Scanner class เพื่อรวบรวม user input นอกจากนี้ เราอภิบายชนิดข้อมูลที่แตกต่างกันที่ Scanner class เสนอซึ่งเราสามารถใช้รวบรวม user input ได้

เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Java อ่านคู่มือ How to Code in Java ของเรา