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 |
|---|---|
|
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";
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);
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);
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();
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);
}
}
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 |
|---|---|
|
Membaca data dan mengubahnya menjadi abyte |
|
Membaca data dan mengubahnya menjadi ashort |
|
Membaca data dan mengubahnya menjadi fileint |
|
Membaca data dan mengubahnya menjadi along |
|
Membaca data dan mengubahnya menjadi afloat |
|
Membaca data dan mengubahnya menjadi adouble |
|
Membaca data dan mengubahnya menjadi aboolean |
|
Membaca satu "token". Token dipisahkan oleh spasi atau penekanan tombol enter |
|
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 |
|---|---|
|
Apakah ada byte? Bisakah input diubah menjadi a byte? |
|
Apakah ada short? Bisakah input diubah menjadi a short? |
|
Apakah ada int? Bisakah input diubah menjadi int? |
|
Apakah ada long? Bisakah input diubah menjadi a long? |
|
Apakah ada float? Bisakah input diubah menjadi a float? |
|
Apakah ada double? Bisakah input diubah menjadi a double? |
|
Apakah ada boolean? Bisakah input diubah menjadi a boolean? |
|
Apakah ada token lain? |
|
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: |
|---|---|
|
// a == 10;
// b == 20;
Output layar akan menjadi: |
GO TO FULL VERSION