อินพุตสตริงหลายรายการใน Java โดยใช้เครื่องสแกน [พร้อมตัวอย่างการเข้ารหัส]

เผยแพร่แล้ว: 2021-02-05

สารบัญ

บทนำ

ในแพ็คเกจ java.util สแกนเนอร์เป็นหนึ่งในคลาสที่ช่วยในการรวบรวมอินพุตหลายประเภท เช่น double, integer, strings เป็นต้น แม้ว่าจะไม่ใช่วิธีอ่านอินพุตที่มีประสิทธิภาพในโปรแกรม Java ที่เวลาทำหน้าที่ ไม่ต้องสงสัยเลยว่าเป็นวิธีที่ง่ายที่สุดวิธีหนึ่งในการรวบรวมอินพุตหลายรายการจากผู้ใช้อย่างไม่ต้องสงสัย ในบล็อกนี้ คุณจะได้เรียนรู้วิธีรวบรวมอินพุตสตริงหลายรายการจากผู้ใช้ในโปรแกรม Java โดยใช้คลาสสแกนเนอร์

วิธีการรับอินพุตหลายรายการโดยใช้สแกนเนอร์

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

วิธี อินพุต
ต่อไปInt() จำนวนเต็ม
ถัดไปFloat() ลอย
ต่อไปดับเบิ้ล() สองเท่า
ถัดไปลอง() ยาว
ถัดไปShort() สั้น
ต่อไป() คำเดียว
ต่อไปบรรทัด() Line of Strings
ถัดไปบูลีน() บูลีน

การใช้ Java nextLine() Method

java.util.Scanner.nextLine() วิธีการส่งกลับบรรทัดที่ข้ามโดยการเลื่อนสแกนเนอร์ผ่านบรรทัดปัจจุบัน หากกำหนดตัวคั่นบรรทัดไว้ที่ส่วนท้ายของบรรทัดปัจจุบัน เมธอดนี้จะแยกตัวคั่นออกและคืนค่าส่วนที่เหลือของสตริงจากบรรทัดปัจจุบัน เครื่องสแกนถูกตั้งค่าไว้ที่จุดเริ่มต้นของบรรทัดถัดไป และอ่านสตริงทั้งหมด รวมทั้งช่องว่างของคำ

ไวยากรณ์สำหรับเมธอด nextLine() มีดังนี้:

สตริงสาธารณะ nextLine()

เมธอดนี้แสดงข้อยกเว้นสองข้อต่อไปนี้:

  • NoSuchElementException – หากสตริงว่างเปล่าหรือไม่พบบรรทัดใดๆ
  • IllegalStateException – หากเครื่องสแกนปิดอยู่

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเมธอด java.util.Scanner.nextLine() รวบรวมอินพุตหลายรายการจากผู้ใช้อย่างไร

นำเข้า java.util.Scanner;

คลาสสาธารณะ SacnnerDemoMultipleString

{

โมฆะคงที่สาธารณะ main(String[] args)

{

การสาธิตเครื่องสแกน = เครื่องสแกนใหม่ (System.in);

System.out.print(“โปรดป้อนข้อมูลที่คุณต้องการพิมพ์หลายรายการ: “);

//รับอินพุตจำนวนเต็ม

สตริง[] string = สตริงใหม่ [demo.nextInt()];

// ใช้ <enter> จากอินพุตด้านบน

demo.nextLine();

สำหรับ (int i = 0; i < string.length; i++)

{

สตริง[i] = demo.nextLine();

}

System.out.println(“\nคุณได้ป้อนข้อมูลต่อไปนี้: “);

//for-each loop เพื่อพิมพ์สตริง

สำหรับ (สตริง str: สตริง)

{

System.out.println(str);

// ปิดเครื่องสแกนเนอร์

scan.close();

}

}

}

โปรแกรมด้านบนจะพิมพ์เอาท์พุตต่อไปนี้

โปรดป้อนอินพุตหลายรายการที่คุณต้องการพิมพ์: 7

มิชา

แฮร์รี่

โรเบิร์ต

ฮาร์วีย์

Jill

Rachel

เจนนิเฟอร์

คุณได้ป้อนข้อมูลต่อไปนี้:

มิชา

แฮร์รี่

โรเบิร์ต

ฮาร์วีย์

Jill

Rachel

เจนนิเฟอร์

การใช้ Java nextInt() Method

java.util.Scanner.nextInt() วิธีการสแกนอินพุตที่ผู้ใช้ให้มาเป็นจำนวนเต็ม หากพบจำนวนเต็ม เครื่องสแกนจะเลื่อนผ่านอินพุตที่ตรงกัน

ไวยากรณ์สำหรับเมธอด nextInt() มีดังนี้:

int สาธารณะ nextInt()

วิธีนี้แสดงข้อยกเว้นสามข้อต่อไปนี้:

  • InputMismatchException – หากโทเค็นถัดไปไม่ตรงกับนิพจน์ทั่วไปของจำนวนเต็ม หรือถ้าโทเค็นถัดไปอยู่นอกช่วง
  • NoSuchElementException – หากอินพุตหมด
  • IllegalStateException – หากเครื่องสแกนปิดอยู่

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเมธอด java.util.Scanner.nextInt() รวบรวมอินพุตหลายรายการจากผู้ใช้อย่างไร

// โปรแกรม Java สแกนจำนวนเต็มโดยใช้ Scanner

// คลาสและพิมพ์ค่าเฉลี่ยของพวกเขา

นำเข้า java.util.Scanner;

คลาสสาธารณะ ScannerDemoInteger

{

โมฆะคงที่สาธารณะ main(String[] args)

{

การสาธิตเครื่องสแกน = เครื่องสแกนใหม่ (System.in);

// เริ่มต้นผลรวมและจำนวนองค์ประกอบอินพุต

int sum = 0, นับ = 0;

// ตรวจสอบว่ามีค่าจำนวนเต็มหรือไม่

ในขณะที่ (demo.hasNextInt())

{

// สแกนค่าจำนวนเต็ม

int num = demo.nextInt();

ผลรวม += จำนวน;

นับ++;

}

ค่าเฉลี่ย int = ผลรวม / นับ;

System.out.println(“ค่าเฉลี่ย: ” + หมายถึง);

}

}

โปรแกรมข้างต้นถูกป้อนด้วยอินพุตต่อไปนี้:

101

223

238

892

99

500

728

โปรแกรมข้างต้นจะพิมพ์ผลลัพธ์ต่อไปนี้:

หมายถึง: 397

อ่านเพิ่มเติม: โครงการ Java MVC

การใช้ Java nextDouble() Method

เมธอด java.util.Scanner.nextDouble() จะสแกนอินพุตที่ผู้ใช้ให้มาเป็นสองเท่า หากพบนิพจน์ทั่วไปแบบทศนิยม เครื่องสแกนจะเลื่อนผ่านอินพุตที่ตรงกัน

ไวยากรณ์สำหรับเมธอด nextInt() มีดังนี้:

สาธารณะ double nextDouble()

วิธีนี้แสดงข้อยกเว้นสามข้อต่อไปนี้:

  • InputMismatchException – หากโทเค็นถัดไปไม่ตรงกับนิพจน์ทั่วไปของ float หรือถ้าโทเค็นถัดไปอยู่นอกช่วง
  • NoSuchElementException – หากอินพุตหมด
  • IllegalStateException – หากเครื่องสแกนปิดอยู่

ตัวอย่าง

ตัวอย่างแสดงให้เห็นว่าเมธอด java.util.Scanner.nextDouble() รวบรวมอินพุตหลายรายการจากผู้ใช้อย่างไร

// โปรแกรม Java ที่จะสแกน float โดยใช้ Scanner

นำเข้า java.util.Scanner;

ScannerDoubleRegularExpression คลาสสาธารณะ {

โมฆะคงที่สาธารณะหลัก (สตริง [] args) {

สตริงใหม่ = "อรุณสวัสดิ์! 3 + 3.0 = 6 จริง”;

// เขียนวัตถุสแกนเนอร์ใหม่ด้วย String Object . ที่ระบุ

การสาธิตเครื่องสแกน = เครื่องสแกนใหม่

// ใช้ locale ของสหรัฐอเมริกาเพื่อระบุ doubles ใน string

demo.useLocale (Locale.US);

// ค้นหาโทเค็นคู่ถัดไปแล้วพิมพ์

ในขณะที่ (demo.hasNext ()) {

// ถ้าตัวถัดไปเป็น double ให้พบ print และ float Regular expression

ถ้า (demo.hasNextDouble ()) {

System.out.println("พบ:" + demo.nextDouble());

}

// หากไม่พบนิพจน์ทั่วไปสองเท่า ให้พิมพ์ "ไม่พบ" และโทเค็น

System.out.println("ไม่พบ :" + demo.next());

}

// ปิดเครื่องสแกนเนอร์

scan.close();

}

}

โปรแกรมข้างต้นจะส่งผลให้ผลลัพธ์ต่อไปนี้:

ไม่พบ: ดี

ไม่พบ: เช้า!

พบ: 3.0

ไม่พบ: +

พบ: 3.0

ไม่พบ: =

พบ: 6.0

ไม่พบ: จริง

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

บทสรุป

ตัวอย่างเช่น รหัสที่ให้ไว้ในบล็อกนี้มีจุดประสงค์และสามารถปรับเปลี่ยนได้ตามความต้องการของแต่ละบุคคล หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java และการพัฒนาซอฟต์แวร์ฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง 9+ โครงการและการมอบหมาย สถานะศิษย์เก่า IIIT-B โครงการหลักในทางปฏิบัติและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

Scanner class ใน Java คืออะไร?

คลาส Scanner ให้คุณอ่านค่าจากคีย์บอร์ดโดยไม่ต้องใช้คอนโซลอินพุตของ Java อินพุตคอนโซลของ Java ช้า และการเปลี่ยนเส้นทางก็เช่นกัน สแกนเนอร์เร็วกว่าและสะดวกกว่า ดังนั้นควรใช้สแกนเนอร์แทนอินพุตคอนโซลของ Java สแกนเนอร์ใช้อินพุตสตรีมปกติของ Java จึงสามารถเชื่อมโยงกับ parsers อื่นๆ ได้ สแกนเนอร์ยังใช้งานง่ายกว่าอินพุตคอนโซลของ Java สแกนเนอร์มีคลาสย่อยหลักสามคลาส ได้แก่ BufferedReader, InputStreamReader และ FileReader โดยทั่วไปที่สุดคือ BufferedReader BufferedReader สามารถอ่านอะไรก็ได้ที่ InputStreamReader สามารถอ่านได้ และมีข้อดีอย่างหนึ่งคือบัฟเฟอร์ บัฟเฟอร์สามารถเก็บได้ครั้งละหนึ่งบรรทัด อินพุตสตรีมไม่มีบัฟเฟอร์เลย: เมื่อคุณเรียก next() มันจะคืนค่ากลับ ซึ่งหมายความว่าคุณต้องรวบรวมค่าก่อนที่จะทำอะไรกับมันได้ สแกนเนอร์ทำเพื่อคุณ

ตัวสร้างสตริงใน Java คืออะไร?

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

InputStreamReader ใน Java คืออะไร?

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