คลาสจากไลบรารีแพ็คเกจ Java ใช้เพื่อป้อน
Scanner
ข้อมูล คลาสนี้จะต้องนำเข้าในโปรแกรมที่จะใช้ สิ่งนี้เสร็จสิ้นก่อนที่คลาสสาธารณะจะเริ่มในโค้ดโปรแกรม คลาสนี้มีวิธีการในการอ่านอักขระตัวถัดไปของประเภทที่กำหนดจากอินพุตสตรีมมาตรฐาน เช่นเดียวกับการตรวจสอบการมีอยู่ของอักขระดังกล่าว ในการทำงานกับอินพุตสตรีม คุณต้องสร้างอ็อบเจ็กต์ของคลาส Scannerโดยระบุระหว่างการสร้างว่าอินพุตสตรีมใดที่จะเชื่อมโยงด้วย สตรีมอินพุตมาตรฐาน (คีย์บอร์ด) ใน Java แสดงด้วยอ็อบเจ็กต์System.in
- และสตรีมเอาต์พุตมาตรฐาน (จอแสดงผล) ก็เป็นวัตถุที่คุณคุ้นเคยอยู่System.out
แล้ว นอกจากนี้ยังมีสตรีมมาตรฐานสำหรับเอาต์พุตข้อผิดพลาด - System.err
แต่การทำงานกับสตรีมนั้นอยู่นอกเหนือขอบเขตของหลักสูตรของเรา
import java.util.Scanner; // импортируем класс
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // создаём an object класса Scanner
int i = 2;
System.out.print("Введите целое число: ");
if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
System.out.println(i*2);
} else {
System.out.println("Вы ввели не целое число");
}
}
}
วิธีการhasNextDouble()
ที่ใช้กับอ็อบเจ็กต์ของคลาสScanner
จะตรวจสอบว่าสามารถอ่านประเภทจำนวนจริงจากอินพุตสตรีมได้หรือไม่double
และเมธอดnextDouble()
จะอ่าน หากคุณพยายามอ่านค่าโดยไม่ตรวจสอบก่อน คุณอาจได้รับข้อผิดพลาดระหว่างการทำงานของโปรแกรม (ดีบักเกอร์จะไม่ตรวจพบข้อผิดพลาดดังกล่าวล่วงหน้า) เช่น ลองป้อนจำนวนจริงในโปรแกรมด้านล่าง:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
System.out.println(i/3);
}
}
นอกจากนี้ยังมีวิธีการnextLine()
ที่ช่วยให้คุณอ่านลำดับอักขระทั้งหมดได้เช่น String
string ซึ่งหมายความว่าค่าที่ ได้รับจากวิธีนี้จะต้องถูกเก็บไว้ในคลาสอ็อบเจ็กต์ ในตัวอย่างต่อไปนี้ มีการสร้างออบเจ็กต์ดังกล่าวสองรายการ จากนั้นอินพุตของผู้ใช้จะถูกเขียนทีละรายการ จากนั้นสตริงหนึ่งรายการจะปรากฏขึ้นบนหน้าจอ ซึ่งได้มาจากการรวมลำดับของอักขระที่ป้อนเข้าด้วยกัน
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1, s2;
s1 = sc.nextLine();
s2 = sc.nextLine();
System.out.println(s1 + s2);
}
}
นอกจากนี้ยังมีวิธีhasNext()
การตรวจสอบว่ามีอักขระเหลืออยู่ในสตรีมอินพุตหรือไม่ คลาสString
มีเมธอดที่มีประโยชน์มากมายที่สามารถนำไปใช้กับสตริงได้ (ก่อนชื่อเมธอด เราจะระบุประเภทของค่าที่ส่งคืน):
int length()
— ส่งกลับความยาวของสตริง (จำนวนอักขระในนั้น)boolean isEmpty()
- ตรวจสอบว่าสตริงว่างเปล่าหรือไม่String replace(a, b)
— ส่งคืนสตริงที่อักขระ a (ตัวอักษรหรือตัวแปรประเภท char) ถูกแทนที่ด้วยอักขระ b;String toLowerCase()
— ส่งคืนสตริงที่อักขระทั้งหมดในสตริงดั้งเดิมถูกแปลงเป็นตัวพิมพ์เล็กString toUpperCase()
— ส่งคืนสตริงที่อักขระทั้งหมดในสตริงดั้งเดิมถูกแปลงเป็นตัวพิมพ์ใหญ่boolean equals(s)
— คืนค่าเป็นจริงหากสตริงที่ใช้เมธอดตรงกับสตริง s ที่ระบุในอาร์กิวเมนต์เมธอด (คุณไม่สามารถเปรียบเทียบโดยใช้==
ตัวดำเนินการสตริงได้ เช่นเดียวกับอ็อบเจ็กต์อื่นๆ)int indexOf(ch)
— ส่งคืนดัชนีของอักขระ ch ในสตริง (ดัชนีคือเลขลำดับของอักขระ แต่อักขระจะมีหมายเลขเริ่มต้นจากศูนย์) หากไม่พบอักขระเลย ก็จะส่งกลับ -1 หากอักขระปรากฏมากกว่าหนึ่งครั้งในสตริง อักขระนั้นจะส่งคืนดัชนีของการปรากฏครั้งแรกint lastIndexOf(ch)
- คล้ายกับวิธีก่อนหน้า แต่จะส่งคืนดัชนีของเหตุการณ์ครั้งล่าสุดหากสัญลักษณ์ปรากฏขึ้นหลายครั้งในบรรทัดint indexOf(ch,n)
— ส่งคืนดัชนีของอักขระ ch ในสตริง แต่เริ่มตรวจสอบจากดัชนี n (ดัชนีคือเลขลำดับของอักขระ แต่อักขระจะมีหมายเลขกำกับโดยเริ่มจากศูนย์)char charAt(n)
— ส่งคืนรหัสของอักขระที่อยู่ในบรรทัดใต้ดัชนี n (ดัชนีคือหมายเลขซีเรียลของอักขระ แต่อักขระจะมีหมายเลขกำกับโดยเริ่มจากศูนย์)
public class Main {
public static void main(String[] args) {
String s1 = "firefox";
System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
String s2 = s1.replace('o', 'a');
System.out.println(s2); // выведет «firefax»
System.out.println(s2.charAt(1)); // выведет «i»
int i;
i = s1.length();
System.out.println(i); // выведет 7
i = s1.indexOf('f');
System.out.println(i); // выведет 0
i = s1.indexOf('r');
System.out.println(i); // выведет 2
i = s1.lastIndexOf('f');
System.out.println(i); // выведет 4
i = s1.indexOf('t');
System.out.println(i); // выведет -1
i = s1.indexOf('r',3);
System.out.println(i); // выведет -1
}
}
ตัวอย่างของโปรแกรมที่จะแสดงดัชนีของช่องว่างทั้งหมดในบรรทัดที่ผู้ใช้ป้อนจากแป้นพิมพ์:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
for(int i=0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
System.out.println(i);
}
}
}
}
ลิงก์ไปยังแหล่งที่มา: สตรีม I/O และสตริงใน Java
GO TO FULL VERSION