1. Membaca dari konsol menggunakanSystem.in

Pada pelajaran sebelumnya, kita mengenal perintah untuk menampilkan informasi di layar. Untuk melakukan ini, kami telah menggunakan System.outobjek dan print()metodenya println(). Ini sederhana dan nyaman.

Namun, seperti yang mungkin sudah Anda duga, menampilkan informasi di layar saja tidak cukup bagi kami. Tujuan sebagian besar program adalah melakukan sesuatu yang bermanfaat bagi pengguna. Artinya, sangat sering bagi pengguna untuk dapat memasukkan data dari keyboard.

Seperti halnya output, kami juga memiliki objek khusus untuk input data — System.in. Tapi, sayangnya bagi kami, ini tidak senyaman yang kami inginkan. Ini memungkinkan kita membaca data dari keyboard satu karakter pada satu waktu.

Untuk menyempurnakannya, kita akan menggunakan kelas lain yang, saat dipasangkan dengan objek System.in, akan memberikan semua yang kita butuhkan. Sejak lama, Java memiliki kelas yang sesuai untuk setiap kesempatan. Dan kita akan mengenal salah satu dari mereka sekarang.


2. Scannerkelas

Kelas Scanner(nama lengkap: java.util.Scanner) dapat membaca data dari berbagai sumber, misalnya konsol, file, dan Internet. Jika kita ingin membaca data dari keyboard, maka kita harus mengirimkan objek System.insebagai argumen yang akan berfungsi sebagai sumber data. Dan kemudian objek Pemindai akan mencari tahu apa yang harus dilakukan dengannya.

Membaca dari keyboard menggunakan Scannerobjek akan terlihat seperti ini:

Kode Penjelasan
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Kami membuat Scannerobjek.
Kami membaca sebaris teks dari keyboard.
Kami membaca nomor dari keyboard.

Kelihatannya mudah, tapi apakah benar sesederhana itu?

Saya pikir Anda pasti memiliki banyak pertanyaan, dan sekarang kami akan menjawabnya.

Tapi pertama-tama, mari kita tunjukkan contoh program lengkap yang menggunakan Scannerkelas tersebut:

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. Membuat Scannerobjek

Pertanyaan pertama adalah garis apa ini Scanner console = new Scanner (System.in);?

Baris ini mungkin membingungkan, tetapi Anda akan selalu melihat hal serupa. Jadi menurut kami penting untuk menjelaskan apa yang terjadi di sini.

Ingat bagaimana kita biasanya membuat variabel dengan teks:

String str = "text";
Mendeklarasikan dan menginisialisasi variabel string

Pertama, kita menulis tipe variabel ( String), lalu namanya ( str), dan terakhir, setelah tanda sama dengan, kita menulis nilainya.

Baris membingungkan kami sebenarnya sama:

Scanner console = new Scanner(System.in);
Mendeklarasikan dan menginisialisasi Scannervariabel

Segala sesuatu di sebelah kiri tanda sama dengan adalah deklarasi variabel bernama consoleyang bertipe Scanner. Anda malah bisa menyebutnya s atau scanneratau bahkan keyboard. Maka kode akan terlihat seperti ini:

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

Saya pikir itu membuat segalanya lebih jelas.

Tetapi kode di sebelah kanan tanda sama dengan sedikit lebih rumit. Saya sekarang mengacu pada new Scanner(System.in); Yang mengatakan, tidak ada hal supernatural yang terjadi di sini juga.

Dalam kode ini, kami memberi tahu mesin Java: buat objek baru (kata newkunci) yang bertipe Scanner , meneruskan objek System.insebagai sumber data untuk Scannerobjek yang baru dibuat.

Setelah menjalankan seluruh baris ini, kita akan memiliki Scannervariabel bernama console yang akan digunakan program kita untuk membaca data dari keyboard.


4. Daftar metode

Dalam contoh di atas, Scanner consolevariabel kita menyimpan referensi ke suatu Scannerobjek.

Untuk memanggil metode pada objek yang direferensikan oleh variabel, Anda menulis tanda titik setelah nama variabel, diikuti dengan nama metode dan argumen apa pun. Tampilan perintah secara umum adalah sebagai berikut:

variable.method(arguments);
Memanggil metode pada objek yang direferensikan oleh variabel

Contoh:

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

Jika Anda tidak berencana meneruskan argumen ke suatu fungsi, maka Anda cukup menulis tanda kurung kosong:

variable.method();
Memanggil metode tanpa melewati argumen

Contoh:

System.out.println();

5. Masukan konsol

Saat kita memiliki Scannerobjek, mudah untuk mendapatkan data dari keyboard.

Untuk membaca baris dari keyboard , Anda memerlukan perintah ini:

String str = console.nextLine();

Saat eksekusi program mencapai baris ini, program akan berhenti sejenak dan menunggu pengguna memasukkan data dan menekan enter. Kemudian semua yang dimasukkan pengguna disimpan dalam variabel str.

Untuk membaca angka dari keyboard , Anda memerlukan perintah ini:

int number = console.nextInt();

Semuanya di sini seperti perintah sebelumnya. Saat eksekusi program mencapai baris ini, program akan berhenti sejenak dan menunggu pengguna memasukkan data dan menekan enter. Setelah itu, semua yang dimasukkan pengguna diubah menjadi angka dan disimpan dalam numbervariabel.

Jika pengguna memasukkan data yang tidak dapat diubah menjadi bilangan bulat, program akan menghasilkan kesalahan dan keluar.

Untuk membaca angka pecahan dari keyboard , Anda memerlukan perintah ini:

double number = console.nextDouble();

Pernyataan ini sangat mirip dengan metode nextInt(), hanya memeriksa apakah data yang dimasukkan dapat diubah menjadi doubleangka.

Contoh program yang membaca dua angka dari keyboard dan menampilkan jumlahnya di layar:

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

Pengguna dapat memasukkan beberapa angka dalam satu baris, memisahkannya dengan spasi: metode kelas Scannermengetahui cara menanganinya. Konon, program membaca angka hanya setelah pengguna menekan Enter.



6. Metode lain dari Scannerkelas

Omong-omong, metode di atas tidak semuanya Scannerditawarkan oleh kelas. Daftar lengkap metode terlihat seperti ini:

metode Keterangan
nextByte()
Membaca data dan mengubahnya menjadi abyte
nextShort()
Membaca data dan mengubahnya menjadi ashort
nextInt()
Membaca data dan mengubahnya menjadi fileint
nextLong()
Membaca data dan mengubahnya menjadi along
nextFloat()
Membaca data dan mengubahnya menjadi afloat
nextDouble()
Membaca data dan mengubahnya menjadi adouble
nextBoolean()
Membaca data dan mengubahnya menjadi aboolean
next()
Membaca satu "token". Token dipisahkan oleh spasi atau penekanan tombol enter
nextLine()
Membaca seluruh baris

Ada juga metode yang memungkinkan Anda memeriksa token berikutnya di input tanpa benar-benar mengambilnya (untuk mengetahui metode mana yang digunakan untuk membacanya).

metode Keterangan
hasNextByte()
Apakah ada byte? Bisakah input diubah menjadi a byte?
hasNextShort()
Apakah ada short? Bisakah input diubah menjadi a short?
hasNextInt()
Apakah ada int? Bisakah input diubah menjadi int?
hasNextLong()
Apakah ada long? Bisakah input diubah menjadi a long?
hasNextFloat()
Apakah ada float? Bisakah input diubah menjadi a float?
hasNextDouble()
Apakah ada double? Bisakah input diubah menjadi a double?
hasNextBoolean()
Apakah ada boolean? Bisakah input diubah menjadi a boolean?
hasNext()
Apakah ada token lain?
hasNextLine()
Apakah ada baris lain?

7. Membaca data dari sebuah string

Kami sebelumnya menyebutkan bahwa Scannerkelas dapat membaca data dari berbagai sumber. Salah satu sumber tersebut adalah string teks .

Ini terlihat seperti ini:

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

Saat membuat Scannerobjek, kami mengirimkan string stralih-alih System.inobjek. Dan sekarang scannerobjek akan membaca data dari string. Contoh:

Kode program: Penjelasan:
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; 
Output layar akan menjadi:30