วิธีรับอินพุตจากผู้ใช้ใน Java (พร้อมรูปภาพ)

สารบัญ:

วิธีรับอินพุตจากผู้ใช้ใน Java (พร้อมรูปภาพ)
วิธีรับอินพุตจากผู้ใช้ใน Java (พร้อมรูปภาพ)

วีดีโอ: วิธีรับอินพุตจากผู้ใช้ใน Java (พร้อมรูปภาพ)

วีดีโอ: วิธีรับอินพุตจากผู้ใช้ใน Java (พร้อมรูปภาพ)
วีดีโอ: How to Beat Prion - Brutal Mode in 2020 | Plague Inc. Prion Walkthrough (No Commentary) 2024, อาจ
Anonim

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

ขั้นตอน

วิธีที่ 1 จาก 2: วิดีโอ

1514756 1
1514756 1

ขั้นตอนที่ 1. นำเข้าคลาส Scanner

คุณสามารถเลือกที่จะนำเข้า

java.util. Scanner

ชั้นเรียนหรือทั้งหมด

java.util

บรรจุุภัณฑ์. หากต้องการนำเข้าคลาสหรือแพ็คเกจ ให้เพิ่มบรรทัดใดบรรทัดหนึ่งต่อไปนี้ที่ส่วนต้นของโค้ด:

    นำเข้า java.util. Scanner; // สิ่งนี้จะนำเข้าเฉพาะคลาส Scanner นำเข้า java.util.*; // สิ่งนี้จะนำเข้าแพ็คเกจ java.util ทั้งหมด

1514756 2
1514756 2

ขั้นตอนที่ 2 เริ่มต้นวัตถุสแกนเนอร์ใหม่โดยส่ง

System.in

อินพุตสตรีมไปยังตัวสร้าง

System.in

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

    สแกนเนอร์ userInputScanner = สแกนเนอร์ใหม่ (System.in);

1514756 3
1514756 3

ขั้นตอนที่ 3 อ่านข้อมูลอินพุตประเภทต่างๆ ที่ผู้ใช้ป้อน

คลาส Scanner รองรับการรับข้อมูลพื้นฐาน เช่น int, byte, short, long นอกเหนือจากการรับสตริง

  • ต่อไปนี้คือวิธีการบางอย่างที่มีให้ในคลาส Scanner:

    • อ่านไบต์ -

      ถัดไปไบต์ ()

    • อ่านสั้น ๆ -

      ถัดไปShort()

    • อ่าน int -

      ต่อไปInt()

    • อ่านยาวๆ -

      ถัดไปลอง()

    • อ่านลอย -

      ถัดไปFloat()

    • อ่านคู่ -

      ต่อไปดับเบิ้ล()

    • อ่านบูลีน -

      ถัดไปบูลีน()

    • อ่านเต็มบรรทัด -

      ต่อไปบรรทัด()

    • อ่านคำ -

      ต่อไป()

  • นี่คือตัวอย่างของโปรแกรมที่ใช้เมธอดต่างๆ ของคลาส Scanner เพื่อรับอินพุตประเภทต่างๆ:

      นำเข้า java.util. Scanner; ScannerExample คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args) {// เริ่มต้นสแกนเนอร์สแกนเนอร์ใหม่ userInputScanner = สแกนเนอร์ใหม่ (System.in); // ทดสอบ nextLine(); System.out.println("\nคุณชื่ออะไร "); ชื่อสตริง = userInputScanner.nextLine(); // ทดสอบ nextInt(); System.out.print("คุณมีแมวกี่ตัว?"); int numberOfCats = userInputScanner.nextInt(); // ทดสอบ nextDouble(); System.out.print("เงินในกระเป๋าของคุณมีเท่าไหร่? $"); moneyInWallet สองเท่า = userInputScanner.nextDouble(); System.out.println("\nสวัสดี " + ชื่อ + "! คุณมี " + numberOfCats + (numberOfCats > 1 ? " cats": " cat") + " และ $" + moneyInWallet + " ในกระเป๋าเงินของคุณ\n"); } }

วิธีที่ 2 จาก 2: การจัดการข้อยกเว้น

1514756 4
1514756 4

ขั้นตอนที่ 1 จัดการข้อยกเว้นอินพุต

หนึ่ง

InputMismatchException

ถูกส่งออกไปเมื่อผู้ใช้ป้อนข้อมูลที่ไม่ตรงกับประเภทที่ร้องขอ ตัวอย่างเช่น หากผู้ใช้ป้อนสตริงเมื่อมีการถาม int โปรแกรมจะโยน an

InputMismatchException

และออก มีหลายวิธีในการจัดการข้อยกเว้นนี้และแก้ไขปัญหานี้ เพื่อให้โปรแกรมของคุณสามารถป้องกันความผิดพลาดได้

1514756 5
1514756 5

ขั้นตอนที่ 2 ใช้บล็อก try-catch เพื่อจัดการกับ

InputMismatchException

.

    นำเข้า java.util. InputMismatchException; นำเข้า java.util. Scanner; ScannerExample คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args) {// เริ่มต้นสแกนเนอร์สแกนเนอร์ใหม่ userInputScanner = สแกนเนอร์ใหม่ (System.in); // ทดสอบ nextLine(); System.out.print("\nคุณชื่ออะไร "); ชื่อสตริง = userInputScanner.nextLine(); // ทดสอบ nextInt(); บูลีน validInput = เท็จ; int numberOfCats = 0; while (!validInput) { System.out.print("คุณมีแมวกี่ตัว?"); ลอง { numberOfCats = userInputScanner.nextInt(); validInput = จริง; } จับ (InputMismatchException จ) { validInput = false; userInputScanner.nextLine(); } } // ทดสอบ nextDouble(); validInput = เท็จ; สองเท่า moneyInWallet = 0.0; ในขณะที่ (!validInput) { System.out.print("เงินในกระเป๋าของคุณมีเท่าไหร่? $"); ลอง { moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine(); validInput = จริง; } จับ (InputMismatchException จ) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHello " + name + "! คุณมี " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " and $" + moneyInWallet + " ในกระเป๋าเงินของคุณ\ NS"); } }

  • โปรดทราบว่าเราต้องนำเข้า

    java.util. InputMismatchException

    เพื่อที่จะใช้

    InputMismatchException

  • ระดับ.
  • เรากำลังใช้ a while loop เพื่อถามคำถามเดียวกันกับผู้ใช้จนกว่าผู้ใช้จะป้อนข้อมูลที่ถูกต้อง
  • กำลังเพิ่ม

    userInputScanner.nextLine();

  • ในส่วน catch ของ try-catch ช่วยให้ Scanner ยอมรับการกดปุ่ม "Enter" จากผู้ใช้และทำหน้าที่เป็นวิธีการล้างบัฟเฟอร์อินพุต
1514756 6
1514756 6

ขั้นตอนที่ 3 หรือทำให้การป้อนข้อมูลของผู้ใช้เข้าใจผิดได้โดยใช้เฉพาะบรรทัดถัดไปจากสแกนเนอร์เท่านั้น

ด้วยวิธีนี้ เราจึงมั่นใจได้ว่าทุกสิ่งที่ Scanner ส่งคืนนั้นเป็นออบเจกต์ String และจะไม่สร้างข้อยกเว้นใดๆ จากนั้น ในการแปลงสตริงเป็นจำนวนเต็มหรือสองเท่า เราสามารถใช้คลาสแรปเปอร์แบบจำนวนเต็มและแบบคู่

    นำเข้า java.util. Scanner; ScannerExample คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args) {// เริ่มต้นสแกนเนอร์สแกนเนอร์ใหม่ userInputScanner = สแกนเนอร์ใหม่ (System.in); // ทดสอบ nextLine(); System.out.print("\nคุณชื่ออะไร "); ชื่อสตริง = userInputScanner.nextLine(); // ทดสอบ nextInt(); บูลีน validInput = เท็จ; int numberOfCats = 0; while (!validInput) { System.out.print("คุณมีแมวกี่ตัว?"); อินพุตสตริง = userInputScanner.nextLine (); ลอง { numberOfCats = Integer.parseInt (อินพุต); validInput = จริง; } จับ (NumberFormatException จ) { validInput = false; } } // ทดสอบ nextDouble(); validInput = เท็จ; สองเท่า moneyInWallet = 0.0; ในขณะที่ (!validInput) { System.out.print("เงินในกระเป๋าของคุณมีเท่าไหร่? $"); อินพุตสตริง = userInputScanner.nextLine (); ลอง { moneyInWallet = Double.parseDouble (อินพุต); validInput = จริง; } จับ (NumberFormatException จ) { validInput = false; } } System.out.println("\nHello " + name + "! คุณมี " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " and $" + moneyInWallet + " ในกระเป๋าเงินของคุณ\ NS"); } }

  • โปรดทราบว่าที่นี่เราไม่ต้องนำเข้า

    NumberFormatException

  • class เพราะมันเป็นส่วนหนึ่งของแพ็คเกจ java.lang ซึ่งหมายความว่ามันมาในตัว
  • เราไม่ต้องล้างบัฟเฟอร์โดยใช้

    userInputScanner.nextLine();

  • ในส่วนของการจับของ try-catch

เคล็ดลับ

  • ดู Scanner API สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้คลาส Scanner
  • ใช้.next() แทน.nextLine() เสมอเพื่ออ่านคำถัดไป เนื่องจาก.nextLine() อาจมีปัญหาได้

แนะนำ: