JavaRush /مدونة جافا /Random-AR /تدفقات الإدخال/الإخراج والسلاسل في Java
articles
مستوى

تدفقات الإدخال/الإخراج والسلاسل في Java

نشرت في المجموعة
يتم استخدام فئة من مكتبة حزمة Java لإدخال البيانات Scanner. تدفقات الإدخال/الإخراج والسلاسل في Java - 1يجب استيراد هذه الفئة في البرنامج حيث سيتم استخدامها. ويتم ذلك قبل أن يبدأ الفصل العام في كود البرنامج. يحتوي الفصل على طرق لقراءة الحرف التالي لنوع معين من تدفق الإدخال القياسي، وكذلك للتحقق من وجود مثل هذا الحرف. للعمل مع دفق الإدخال، تحتاج إلى إنشاء كائن من فئة الماسح الضوئي ، مع تحديد دفق الإدخال الذي سيتم ربطه به أثناء الإنشاء. يتم تمثيل دفق الإدخال القياسي (لوحة المفاتيح) في 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. في المثال التالي، يتم إنشاء كائنين من هذا القبيل، ثم تتم كتابة مدخلات المستخدم لهما واحدًا تلو الآخر، ثم يتم عرض سلسلة واحدة على الشاشة، ويتم الحصول عليها من خلال دمج تسلسلات الأحرف المدخلة.
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)- يُرجع صحيحًا إذا كانت السلسلة التي يتم تطبيق الطريقة عليها تطابق السلسلة المحددة في وسيطة الطريقة (لا يمكنك المقارنة باستخدام ==عامل السلسلة، مثل أي كائنات أخرى)؛
  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);
            }
        }
    }
}
رابط إلى المصدر: تدفقات الإدخال/الإخراج والسلاسل في Java
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION