JavaRush /จาวาบล็อก /Random-TH /สตรีม I/O และสตริงใน Java
articles
ระดับ

สตรีม I/O และสตริงใน Java

เผยแพร่ในกลุ่ม
คลาสจากไลบรารีแพ็คเกจ Java ใช้เพื่อป้อนScannerข้อมูล สตรีม I/O และสตริงใน Java - 1คลาสนี้จะต้องนำเข้าในโปรแกรมที่จะใช้ สิ่งนี้เสร็จสิ้นก่อนที่คลาสสาธารณะจะเริ่มในโค้ดโปรแกรม คลาสนี้มีวิธีการในการอ่านอักขระตัวถัดไปของประเภทที่กำหนดจากอินพุตสตรีมมาตรฐาน เช่นเดียวกับการตรวจสอบการมีอยู่ของอักขระดังกล่าว ในการทำงานกับอินพุตสตรีม คุณต้องสร้างอ็อบเจ็กต์ของคลาส 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()ที่ช่วยให้คุณอ่านลำดับอักขระทั้งหมดได้เช่น Stringstring ซึ่งหมายความว่าค่าที่ ได้รับจากวิธีนี้จะต้องถูกเก็บไว้ในคลาสอ็อบเจ็กต์ ในตัวอย่างต่อไปนี้ มีการสร้างออบเจ็กต์ดังกล่าวสองรายการ จากนั้นอินพุตของผู้ใช้จะถูกเขียนทีละรายการ จากนั้นสตริงหนึ่งรายการจะปรากฏขึ้นบนหน้าจอ ซึ่งได้มาจากการรวมลำดับของอักขระที่ป้อนเข้าด้วยกัน
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มีเมธอดที่มีประโยชน์มากมายที่สามารถนำไปใช้กับสตริงได้ (ก่อนชื่อเมธอด เราจะระบุประเภทของค่าที่ส่งคืน):
  1. int length()— ส่งกลับความยาวของสตริง (จำนวนอักขระในนั้น)
  2. boolean isEmpty()- ตรวจสอบว่าสตริงว่างเปล่าหรือไม่
  3. String replace(a, b)— ส่งคืนสตริงที่อักขระ a (ตัวอักษรหรือตัวแปรประเภท char) ถูกแทนที่ด้วยอักขระ b;
  4. String toLowerCase()— ส่งคืนสตริงที่อักขระทั้งหมดในสตริงดั้งเดิมถูกแปลงเป็นตัวพิมพ์เล็ก
  5. String toUpperCase()— ส่งคืนสตริงที่อักขระทั้งหมดในสตริงดั้งเดิมถูกแปลงเป็นตัวพิมพ์ใหญ่
  6. boolean equals(s)— คืนค่าเป็นจริงหากสตริงที่ใช้เมธอดตรงกับสตริง s ที่ระบุในอาร์กิวเมนต์เมธอด (คุณไม่สามารถเปรียบเทียบโดยใช้==ตัวดำเนินการสตริงได้ เช่นเดียวกับอ็อบเจ็กต์อื่นๆ)
  7. int indexOf(ch)— ส่งคืนดัชนีของอักขระ ch ในสตริง (ดัชนีคือเลขลำดับของอักขระ แต่อักขระจะมีหมายเลขเริ่มต้นจากศูนย์) หากไม่พบอักขระเลย ก็จะส่งกลับ -1 หากอักขระปรากฏมากกว่าหนึ่งครั้งในสตริง อักขระนั้นจะส่งคืนดัชนีของการปรากฏครั้งแรก
  8. int lastIndexOf(ch)- คล้ายกับวิธีก่อนหน้า แต่จะส่งคืนดัชนีของเหตุการณ์ครั้งล่าสุดหากสัญลักษณ์ปรากฏขึ้นหลายครั้งในบรรทัด
  9. int indexOf(ch,n)— ส่งคืนดัชนีของอักขระ ch ในสตริง แต่เริ่มตรวจสอบจากดัชนี n (ดัชนีคือเลขลำดับของอักขระ แต่อักขระจะมีหมายเลขกำกับโดยเริ่มจากศูนย์)
  10. 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
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION