Klaviaturadan kiritish

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Konsoldan o'qish, System.in

Avvalgi leksiyalarda biz ekranga chiqarish buyruqlari bilan tanishgan edik. Buning uchun biz System.out ob'ektidan va uning print() va println() metodlaridan foydalandik. Oddiy va qulay.

Lekin, siz balki tushungansiz, ekranga chiqarishning o'zi yetarli emas. Aksariyat dasturlar foydalanuvchi uchun foydali narsalarni bajarish maqsadida yaratilgan. Shuning uchun ko'pincha foydalanuvchi klaviaturadan ma'lumot kiritishi kerak bo'ladi.

Chiqish uchun bo'lgani kabi, ma'lumot kiritish uchun ham maxsus ob'ekt mavjud - System.in. Ammo, biz uchun afsuski, u biz istagandek qulay emas. Bu ob'ekt klaviaturadan ma'lumotlarni bir belgi bo'lib qabul qila oladi.

Shuning uchun biz System.in ob'ekti bilan juftlikda kerak bo'lgan narsalarni taqdim etuvchi yana bir sinfdan foydalanamiz. Java'da har qanday holat uchun sinflar allaqachon mavjud. Biz hozir ulardan biri bilan tanishamiz.


2. Scanner sinfi

Scanner sinfi (to'liq nomi java.util.Scanner) turli manbalardan ma'lumotlarni qabul qila oladi: konsol, fayllar, internet. Agar biz u klaviaturadan ma'lumotlarni o'qishi kerak bo'lsa, unga parametr sifatida System.in ob'ektini uzatishimiz kerak. Keyin Scanner turi ob'ekti o'zi nima qilishini biladi.

Klaviaturadan qabul qilish Scanner turi ob'ekti yordamida taxminan shunday bo'ladi:

Kod Tushuntirish
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Scanner sinfi ob'ektini yaratamiz.
Klaviaturadan matn qatorini o'qiymiz.
Klaviaturadan sonni o'qiymiz.

Ko'rinishidan qiyin emas, lekin aslida hammasi shunchalik oddiymi?

O'ylaymanki, sizda ko'p savollar paydo bo'ldi va hozir biz ularga javob beramiz.

Lekin avval, Scanner sinfi ishtirok etgan to'liq dastur misolini ko'rsatamiz:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      Scanner console = new Scanner(System.in);
      String name = console.nextLine();
      int age = console.nextInt();

      System.out.println("Name: " + name);
      System.out.println("Age: " + age);
   }
}

3. Scanner ob'ektini yaratish

Birinchi savol — bu qanday qator Scanner console = new Scanner(System.in);?

Bu qator boshni aylantirishi mumkin, ammo siz doim shunga o'xshash narsalarni uchratasiz. Shunday qilib, o'ylab ko'ramiz, bu yerda nimani tushunishga harakat qilayotganimizni aytish vaqti keldi.

Matnli o'zgaruvchini qanday yaratishni eslaymiz:

String str = "matn";
Matnli o'zgaruvchini e'lon qilish va initsializatsiya qilish

Avval biz o'zgaruvchining turini yozamiz (String), keyin uning nomini (str) va nihoyat tenglik belgisi orqali qiymatni yozamiz.

Bizning g'alati qatorimizda ham aslida hammasi shunday:

Scanner console = new Scanner(System.in);
Scanner turi o'zgaruvchini e'lon qilish va initsializatsiya qilish

Hammasi tenglik belgisi'ning chap tarafida joylashgan - bu Scanner turi console nomli o'zgaruvchini e'lon qilishdir. Biz uni, masalan, s yoki scanner, hatto keyboard deb atashimiz mumkin edi. Keyin kod quyidagicha ko'rinardi:

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

O'ylaymanki, endi hamma narsa ko'proq ravshan bo'ldi.

Va kod, tenglik belgisi'ning o'ng tarafida joylashgan, biroz murakkabroq. Bu new Scanner(System.in); degan ma'noni anglatadi. Lekin bunda ham hech qanday koinot yo'q.

Bu kodda biz Java-mashinasiga shunday deymiz: yangi ob'ekt yarat (so'z new) Scanner turidan va unga parametr sifatida yangi yaratilgan Scanner ob'ekti ma'lumotlarni qabul qiladigan narsani - System.in ob'ektini uzat.

Butun bu qatorni bajarishdan so'ng, bizda console nomli Scanner turi o'zgaruvchi paydo bo'ladi, bu orqali bizning dasturimiz klaviaturadan ma'lumotlarni o'qiy oladi.


4. Metodlarni chaqirish

Yuqoridagi misolda bizning console nomli Scanner turi o'zgaruvchimiz o'z ichida Scanner turidagi ob'ektga ishora saqlardi.

O'zgaruvchining ishora qilayotgan ob'ekt metodlarini chaqirish uchun, o'zgaruvchining nomidan keyin nuqta qo'yib, metod nomi va parametrlarni yozish kerak. Ushbu buyruqning umumiy ko'rinishi quyidagicha:

o'zgaruvchi.metod(parametrlar);
O'zgaruvchi ko'rsatgan ob'ekt metodini chaqirish

Misollar:

System.out.println("Salom");
System.out.println(1);

Agar siz funksiyaga parametrlar uzatishni rejalashtirmasangiz, shunchaki bo'sh qavslarni yozish kerak:

o'zgaruvchi.metod();
Parametrlarni uzatmasdan metodni chaqirish

Misol:

System.out.println();

5. Konsoldan ma'lumotlarni kiritish

Agar bizda Scanner turi ob'ekti bo'lsa, klaviaturadan ma'lumotlarni kiritish juda oson.

Klaviaturadan qator o'qish uchun, buyruq kerak:

String str = console.nextLine();

Dastur ushbu qatorda to'xtab qoladi va foydalanuvchi ma'lumotlarni kiritgunga qadar kutadi va enter tugmasini bosadi. Keyinchalik foydalanuvchi tomonidan kiritilgan barcha ma'lumotlar str o'zgaruvchisida saqlanadi.

Klaviaturadan son o'qish uchun, buyruq kerak:

int number = console.nextInt();

Bu buyruq avvalgi buyruq bilan bir xil. Dastur ushbu qatorda to'xtab qoladi va foydalanuvchi ma'lumotlarni kiritgunga qadar kutadi va enter tugmasini bosadi. Keyinchalik foydalanuvchi tomonidan kiritilgan ma'lumotlar soniga aylantiriladi va number o'zgaruvchisida saqlanadi.

Agar foydalanuvchi butun soniga aylantirib bo'lmaydigan ma'lumotlarni kiritgan bo'lsa, dasturda xato paydo bo'ladi va u tugaydi.

Klaviaturadan kasr son o'qish uchun, buyruq kerak:

double number = console.nextDouble();

Bu buyruq to'liq nextInt() buyruqiga o'xshaydi, lekin bu kiritilgan ma'lumotlarni double soniga aylantirish mumkinligini tekshiradi.

Foydalanuvchi tomonidan kiritilgan ikki sonni o'qiydigan va ularning yig'indisini chiqaradigan dastur misoli:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      Scanner console = new Scanner(System.in);
      int a = console.nextInt();
      int b = console.nextInt();

      System.out.println(a + b);
   }
}
Eslatma

Foydalanuvchi bir satrda bir necha sonlarni, ularni bo'shliqlar bilan ajratib kirita oladi: bunday vaziyat Scanner sinfi metodlari tomonidan to'g'ri qayta ishlanadi. Ammo sonlar foydalanuvchi Enter tugmasini bosgandan so'nggina dastur tomonidan o'qiladi.



6. Scanner sinfining boshqa metodlari

Bu, aytgancha, Scanner sinfining barcha metodlari emas. To'liq ro'yxat taxminan quyidagicha bo'ladi:

Metod Tavsif
nextByte()
Ma'lumotlarni o'qiydi va ularni byte turiga aylantiradi
nextShort()
Ma'lumotlarni o'qiydi va ularni short turiga aylantiradi
nextInt()
Ma'lumotlarni o'qiydi va ularni int turiga aylantiradi
nextLong()
Ma'lumotlarni o'qiydi va ularni long turiga aylantiradi
nextFloat()
Ma'lumotlarni o'qiydi va ularni float turiga aylantiradi
nextDouble()
Ma'lumotlarni o'qiydi va ularni double turiga aylantiradi
nextBoolean()
Ma'lumotlarni o'qiydi va ularni boolean turiga aylantiradi
next()
Bitta "so'z" o'qiydi. So'zlar bo'shliqlar yoki enter bilan ajratiladi
nextLine()
Butun qatordagi matnni o'qiydi

Hali o'qilmagan ma'lumotlarning turini tekshirishga imkon beruvchi metodlar ham mavjud (ularni qanday metod bilan o'qish kerakligini bilish uchun).

Metod Tavsif
hasNextByte()
U erda byte turi bormi? Uni byte ga aylantirish mumkinmi?
hasNextShort()
U erda short turi bormi? Uni short ga aylantirish mumkinmi?
hasNextInt()
U erda int turi bormi? Uni int ga aylantirish mumkinmi?
hasNextLong()
U erda long turi bormi? Uni long ga aylantirish mumkinmi?
hasNextFloat()
U erda float turi bormi? Uni float ga aylantirish mumkinmi?
hasNextDouble()
U erda double turi bormi? Uni double ga aylantirish mumkinmi?
hasNextBoolean()
U erda boolean turi bormi? Uni boolean ga aylantirish mumkinmi?
hasNext()
U erda yana bir so'z bormi?
hasNextLine()
U erda yana bir qator bormi?

7. Satrdan ma'lumotlarni kiritish

Biz yuqorida aytgan edik, Scanner sinfi turli manbalardan ma'lumotlarni o'qiy oladi. Va bu manbalardan biri - matn satri.

Bu taxminan shunday ko'rinadi

String str = "matn";
Scanner scanner = new Scanner(str);

System.in ob'ekti o'rniga biz < code class = "text-viola"> Scanner turi ob'ektini yaratishda unga qatorni uzatamiz - str. Va endi scanner ob'ekti qatorlardan ma'lumotlarni o'qiydi. Misol:

Dastur kodi: Tushuntirish:
import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      String str = "10 20 40 60";
      Scanner scanner = new Scanner(str);
      int a = scanner.nextInt();
      int b = scanner.nextInt();

      System.out.println(a + b);
   }
}






// a == 10;
// b == 20;
Ekranga 30 chiqadi: 30

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION