CodeGym /Kurslar /Java SELF AZ /Daxil etmə klaviaturadan

Daxil etmə klaviaturadan

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Konsoldan oxuma, System.in

Əvvəlki mühazirələrdə ekrana çıxış əmrləri ilə tanış olmuşduq. Bunun üçün biz System.out obyektindən və onun print()println() metodlarından istifadə etmişdik. Sadə və rahat.

Amma, yəqin ki, artıq siz də təxmin edirsiniz, yalnız ekrana çıxışla kifayətlənmək olmur. Əksər proqramların məqsədi istifadəçi üçün faydalı bir şey etməkdir. Buna görə də çox vaxt istifadəçilərin klaviyaturadan məlumat daxil edə bilməsi tələb olunur.

Çıxış üçün olduğu kimi, giriş üçün də xüsusi bir obyekt var — System.in. Amma, bizim üçün təəssüf ki, bu obyekt o qədər də rahat deyil. Bu obyekt hər dəfə bir simvol olmaqla klaviyaturadan məlumat oxumağa imkan verir.

Buna görə də biz System.in obyekti ilə birlikdə bizə lazım olan hər şeyi təmin edən başqa bir sinifdən istifadə edəcəyik. Javada hər vəziyyət üçün siniflər çoxdan mövcuddur. Onlardan biri ilə indi tanış olacağıq.


2. Scanner sinfi

Scanner sinfi (java.util.Scanner tam adı ilə) müxtəlif mənbələrdən: konsol, fayllar, internetdən məlumat oxuya bilir. Əgər biz onun klaviaturadan məlumat oxumasını istəyiriksə, ona System.in obyektini parametr olaraq – məlumat mənbəyi kimi ötürməliyik. Scanner tipində obyekt özü başa düşəcək, nə etmək lazımdır.

Klaviaturadan məlumat oxuma prosesi Scanner tipli obyekt vasitəsilə təxminən belə görünəcək:

Kod İzah
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Scanner sinfinin obyektini yaradırıq.
Klaviaturadan mətn sətirini oxuyuruq.
Klaviaturadan ədəd oxuyuruq.

Çətin görünmür, amma əslində hər şey bu qədər sadədirmi?

Düşünürəm ki, artıq bir çox suallarınız var və indi biz onlara cavab verəcəyik.

Ancaq əvvəlcə Scanner sinfindən istifadə edilən tam proqram nümunəsini göstərək:

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("Ad: " + name);
      System.out.println("Yaş: " + age);
   }
}

3. Scanner obyektinin yaradılması

İlk sual — bu nə olan şey Scanner console = new Scanner(System.in);?

Bu cür sətir çaşdırıcı görünə bilər, amma siz daim buna oxşar şeylərlə qarşılaşacaqsınız. Deməli, düşünürəm ki, artıq burada yazılanları izah etməyin vaxtıdır.

Əvvəlcə mətn dəyişəni yaratmağımıza nəzər yetirək:

String str = "mətn";
Text tipli dəyişənin elan olunması və ilkinləşdirilməsi

Əvvəl dəyişənin tipini (String) yazırıq, sonra onun adını (str) və sonunda isə bərabərlik işarəsindən sonra qiymətini göstəririk.

Bizim qəribə sətirimizdə də mahiyyətcə eyni şeydir:

Scanner console = new Scanner(System.in);
Scanner tipli dəyişənin elan olunması və ilkinləşdirilməsi

Bərabərlik işarəsindən sola olan bütün yazılanlar — bu Scanner tipli və adı console olan dəyişənin elan olunmasıdır. Onu, məsələn, s və ya scanner, ya da hətta keyboard adlandıra bilərdik. O zaman kod belə görünərdi:

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();

Düşünürəm ki, indi hər şey daha da aydın oldu.

Və bərabərlik işarəsindən sağdakı kod bir az daha mürəkkəbdir. Söhbət new Scanner(System.in); sətrindən gedir. Amma burada da heç bir kosmik şey yoxdur.

Bu kodda biz Java maşınından xahiş edirik: yeni bir obyekt yarat (new sözü) Scanner tipli və ona parametri kimi verilən bir şeyi — hansı ki yeni yaradılan Scanner obyekti məlumatları götürəcək — System.in obyektini ötür.

Bu sətirin tam icrasından sonra bizdə adı console olan və Scanner tipli dəyişən yaranacaq ki, onun köməyi ilə proqramımız klaviaturadan məlumat oxuya biləcək.


4. Metodların çağırışı

Yuxarıda göstərilən nümunədə bizim console adlı dəyişənimiz Scanner tipinə malik idi və öz daxilində Scanner tipində obyektin linkini saxlayırdı.

Bir dəyişənin link verdiyi obyektin metodlarını çağırmaq üçün dəyişənin adından sonra nöqtə qoymaq, ardınca metodun adını və parametrləri yazmaq lazımdır. Bu komandanın ümumi görünüşü aşağıdakı kimidir:

dəyişən.metod(parametrlər);
Bir dəyişənin link verdiyi obyektin metodunun çağırışı

Nümunələr:

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

Əgər funksiyaya parametrlər ötürməyi planlaşdırmırsınızsa, sadəcə boş mötərizələr yazmaq lazımdır:

dəyişən.metod();
Parametr ötürmədən metodun çağırışı

Nümunə:

System.out.println();

5. Konsoldan məlumat daxil etmək

Klaviaturadan məlumat daxil etmək, əgər bizdə Scanner tipli obyekt varsa, çox asandır.

Klaviaturadan sətir oxumaq üçün komandaya ehtiyac var:

String str = console.nextLine();

Proqram bu sətri icra edərkən dayandırılacaq və istifadəçinin məlumat daxil edib enter düyməsini basmasını gözləyəcək. Bundan sonra istifadəçinin daxil etdiyi məlumat str dəyişənində saxlanılacaq.

Klaviaturadan tam ədəd oxumaq üçün komandaya ehtiyac var:

int number = console.nextInt();

Burada hər şey əvvəlki komandaya oxşayır. Proqram bu sətri icra edərkən dayandırılacaq və istifadəçinin məlumat daxil edib enter düyməsini basmasını gözləyəcək. Bundan sonra istifadəçinin daxil etdiyi məlumat ədədə çevrilərək number dəyişənində saxlanılacaq.

Əgər istifadəçi tam ədədə çevrilə bilməyəcək məlumat daxil edərsə, proqramda səhv yaranacaq və o, dayanacaq.

Klaviaturadan kesirli ədəd oxumaq üçün komandaya ehtiyac var:

double number = console.nextDouble();

Bu komanda tam olaraq nextInt() komandası kimi işləyir, yalnız o yoxlayır ki, daxil edilmiş məlumat double tipinə çevrilə biləndir.

İki ədəd oxuyan və onların cəmini ekrana çıxaran bir proqram nümunəsi:

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);
   }
}
Qeyd

İstifadəçi bir sətrdə bir neçə ədəd daxil edib onları boşluqla ayıra bilər: belə vəziyyət Scanner klassının metodları tərəfindən düzgün işlənəcəkdir. Lakin ədədlər proqram tərəfindən yalnız istifadəçi Enter düyməsini basdıqdan sonra oxunacaq.



6. Scanner sinfinin digər metodları

Bu arada, bunlar Scanner sinfinin bütün metodları deyildi. Tam siyahı təxminən bu cür görünür:

Metod Təsvir
nextByte()
Məlumatları oxuyur və onları byte tipinə çevirir
nextShort()
Məlumatları oxuyur və onları short tipinə çevirir
nextInt()
Məlumatları oxuyur və onları int tipinə çevirir
nextLong()
Məlumatları oxuyur və onları long tipinə çevirir
nextFloat()
Məlumatları oxuyur və onları float tipinə çevirir
nextDouble()
Məlumatları oxuyur və onları double tipinə çevirir
nextBoolean()
Məlumatları oxuyur və onları boolean tipinə çevirir
next()
Bir "söz" oxuyur. Sözlər boşluq və ya enter ilə ayrılır
nextLine()
Bütün sətiri oxuyur

Hələ oxunmamış məlumatın tipini yoxlamağa imkan verən metodlar da var (hansı metodla onları oxumaq lazım olduğunu bilmək üçün).

Metod Təsvir
hasNextByte()
Orada byte tipi var? Bu, byte-a çevrilə bilər?
hasNextShort()
Orada short tipi var? Bu, short-a çevrilə bilər?
hasNextInt()
Orada int tipi var? Bu, int-a çevrilə bilər?
hasNextLong()
Orada long tipi var? Bu, long-a çevrilə bilər?
hasNextFloat()
Orada float tipi var? Bu, float-a çevrilə bilər?
hasNextDouble()
Orada double tipi var? Bu, double-a çevrilə bilər?
hasNextBoolean()
Orada boolean tipi var? Bu, boolean-a çevrilə bilər?
hasNext()
Orada başqa bir söz var?
hasNextLine()
Orada başqa bir sətir var?

7. Sətirdən məlumat daxil etmək

Yuxarıda demişdik ki, Scanner sinfi müxtəlif mənbələrdən məlumatları oxuya bilir. Bu mənbələrdən biri - mətn sətiri.

Bu təxminən belə görünəcək

String str = "mətn";
Scanner scanner = new Scanner(str);

System.in obyekti əvəzinə, Scanner tipində obyekt yaradarkən ona sətir – str ötürürük. İndi isə scanner obyekti məlumatları sətirdən oxuyacaq. Nümunə:

Proqramın kodu: İzah:
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;
Ekranda bu göstəriləcək: 30

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION