دوال - كيف يمكنني قراءة الإدخال من وحدة التحكم باستخدام فئة الماسح الضوئي في Java؟



امثلة محلولة بلغة الجافا (10)

كيف يمكنني قراءة الإدخال من وحدة التحكم باستخدام فئة Scanner ؟ شيء من هذا القبيل:

System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code

بشكل أساسي ، كل ما أريده هو أن تقوم الماسحة الضوئية بقراءة مدخلات لاسم المستخدم ، وتعيين الإدخال إلى متغير String .


  1. لقراءة المدخلات:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    
  2. لقراءة المدخلات عند استدعاء طريقة تحتوي على بعض الوسيطات / المعلمات:

    if (args.length != 2) {
        System.err.println("Utilizare: java Grep <fisier> <cuvant>");
        System.exit(1);
    }
    try {
        grep(args[0], args[1]);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    

توجد مشكلة في أسلوب input.nextInt () - فقط يقرأ قيمة int.

لذلك عند قراءة السطر التالي باستخدام input.nextLine () تتلقى "\ n" ، أي مفتاح Enter . لذلك لتخطي هذا عليك إضافة input.nextLine ().

جربها على هذا النحو:

 System.out.print("Insert a number: ");
 int number = input.nextInt();
 input.nextLine(); // This line you have to add (it consumes the \n character)
 System.out.print("Text1: ");
 String text1 = input.nextLine();
 System.out.print("Text2: ");
 String text2 = input.nextLine();

مثال بسيط لتوضيح كيفية عمل java.util.Scanner لقراءة عدد صحيح واحد من System.in . انها حقا بسيطة للغاية.

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

لاسترداد اسم مستخدم ربما أستخدم sc.nextLine() .

System.out.println("Enter your username: ");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.println("Your username is " + username);

يمكنك أيضًا استخدام next(String pattern) إذا كنت تريد المزيد من التحكم في الإدخال ، أو فقط تحقق من صحة متغير username .

ستجد المزيد من المعلومات حول تنفيذها في وثائق API ل java.util.Scanner


مثال بسيط:

import java.util.Scanner;

public class Example
{
    public static void main(String[] args)
    {
        int number1, number2, sum;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter First multiple");
        number1 = input.nextInt();

        System.out.println("Enter second multiple");
        number2 = input.nextInt();

        sum = number1 * number2;

        System.out.printf("The product of both number is %d", sum);
    }
}

هناك طريقة بسيطة للقراءة من وحدة التحكم.

يرجى الاطلاع على الكود التالي:

import java.util.Scanner;

    public class ScannerDemo {

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);

            // Reading of Integer
            int number = sc.nextInt();

            // Reading of String
            String str = sc.next();
        }
    }

للحصول على فهم مفصل ، يرجى الرجوع إلى الوثائق أدناه.

Doc

الآن دعونا نتحدث عن الفهم التفصيلي لعمل الطبقة الماسح الضوئي:

public Scanner(InputStream source) {
    this(new InputStreamReader(source), WHITESPACE_PATTERN);
}

هذا هو منشئ لإنشاء مثيل الماسح الضوئي.

نحن هنا تمرير المرجع InputStream الذي لا شيء غير System.In . هنا يفتح أنبوب InputStream لإدخال وحدة التحكم.

public InputStreamReader(InputStream in) {
    super(in);
    try {
        sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object
    }
    catch (UnsupportedEncodingException e) {
        // The default encoding should always be available
        throw new Error(e);
    }
}

بتمرير System.in سيتم فتح هذا الرمز مأخذ التوصيل للقراءة من وحدة التحكم.


هناك عدة طرق للحصول على مدخلات من المستخدم. هنا في هذا البرنامج سوف نأخذ فئة الماسح الضوئي لتحقيق المهمة. تأتي فئة الماسح الضوئي هذه تحت java.util ، ومن ثم فإن السطر الأول من البرنامج هو استيراد java.util.Scanner؛ والذي يسمح للمستخدم بقراءة قيم أنواع مختلفة في Java. يجب أن يكون سطر بيان الاستيراد في السطر الأول من برنامج java ، ونتابع أكثر للرمز.

in.nextInt(); // It just reads the numbers

in.nextLine(); // It get the String which user enters

للوصول إلى أساليب في فئة الماسح الضوئي ، قم بإنشاء كائن ماسح ضوئي جديد باسم "in". الآن نستخدم أحد طرقها ، أي "التالي". يحصل الأسلوب "التالي" على سلسلة النص التي يدخلها المستخدم على لوحة المفاتيح.

أنا هنا باستخدام in.nextLine(); للحصول على السلسلة التي يدخلها المستخدم.

import java.util.Scanner;

class GetInputFromUser {
    public static void main(String args[]) {
        int a;
        float b;
        String s;

        Scanner in = new Scanner(System.in);
        System.out.println("Enter a string");
        s = in.nextLine();
        System.out.println("You entered string " + s);

        System.out.println("Enter an integer");
        a = in.nextInt();
        System.out.println("You entered integer " + a);

        System.out.println("Enter a float");
        b = in.nextFloat();
        System.out.println("You entered float " + b);
    }
}

يمكنك استخدام فئة الماسح الضوئي في Java

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println("String: " + s);

يمكنك تدفق هذا الرمز:

Scanner obj= new Scanner(System.in);
String s = obj.nextLine();

Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();

import java.util.*;

class Ss
{
    int id, salary;
    String name;

   void Ss(int id, int salary, String name)
    {
        this.id = id;
        this.salary = salary;
        this.name = name;
    }

    void display()
    {
        System.out.println("The id of employee:" + id);
        System.out.println("The name of employye:" + name);
        System.out.println("The salary of employee:" + salary);
    }
}

class employee
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);

        Ss s = new Ss(sc.nextInt(), sc.nextInt(), sc.nextLine());
        s.display();
    }
}




java.util.scanner