1. Membaca daripada konsol menggunakanSystem.in
Dalam pelajaran sebelumnya, kami membiasakan diri dengan arahan untuk memaparkan maklumat pada skrin. Untuk melakukan ini, kami telah menggunakan System.out
objek print()
dan println()
kaedahnya. Ia mudah dan mudah.
Tetapi, seperti yang anda mungkin sudah meneka, memaparkan maklumat pada skrin tidak mencukupi untuk kami. Tujuan kebanyakan program adalah untuk melakukan sesuatu yang berguna untuk pengguna. Ini bermakna bahawa ia sangat kerap diperlukan untuk pengguna boleh memasukkan data dari papan kekunci.
Sama seperti kes untuk output, kami juga mempunyai objek khas untuk input data — System.in
. Tetapi, malangnya bagi kami, ia tidak semudah yang kami mahu. Ia membolehkan kami membaca data dari papan kekunci satu aksara pada satu masa.
Untuk menambah baik ini, kami akan menggunakan kelas lain yang, apabila dipasangkan dengan System.in
objek, akan memberikan kami semua yang kami perlukan. Untuk masa yang lama sekarang, Java mempunyai kelas yang sesuai untuk setiap kesempatan. Dan kita akan mengenali salah seorang daripada mereka sekarang.
2. Scanner
kelas
Kelas Scanner
(nama penuh: java.util.Scanner
) boleh membaca data daripada sumber yang berbeza, contohnya konsol, fail dan Internet. Jika kita mahu ia membaca data dari papan kekunci, maka kita mesti memasukkan objek System.in
sebagai hujah yang akan berfungsi sebagai sumber data. Dan kemudian objek Pengimbas akan memikirkan apa yang perlu dilakukan dengannya.
Membaca dari papan kekunci menggunakan Scanner
objek akan kelihatan seperti ini:
Kod | Penjelasan |
---|---|
|
Kami mencipta Scanner objek. Kami membaca sebaris teks dari papan kekunci. Kami membaca nombor dari papan kekunci. |
Ia kelihatan mudah, tetapi adakah ia benar-benar semudah itu?
Saya fikir anda mesti mempunyai banyak soalan, dan sekarang kami akan menjawabnya.
Tetapi pertama, mari kita tunjukkan contoh program lengkap yang menggunakan Scanner
kelas:
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. Mencipta Scanner
objek
Soalan pertama ialah apakah baris ini Scanner console = new Scanner (System.in);
?
Baris ini mungkin mengelirukan, tetapi anda akan melihat perkara yang serupa sepanjang masa. Jadi kami fikir adalah penting untuk menerangkan perkara yang berlaku di sini.
Ingat bagaimana kita biasanya membuat pembolehubah dengan teks:
String str = "text";
Mula-mula, kita tulis jenis pembolehubah ( String
), kemudian namanya ( str
), dan akhirnya, selepas tanda sama, kita tulis nilainya.
Barisan kami yang membingungkan sebenarnya sama:
Scanner console = new Scanner(System.in);
Segala-galanya di sebelah kiri tanda sama ialah pengisytiharan pembolehubah bernama console
yang jenisnya ialah Scanner
. Sebaliknya anda boleh memanggilnya s
atau scanner
malah keyboard
. Kemudian kod itu akan kelihatan 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 fikir itu menjadikan segala-galanya lebih jelas.
Tetapi kod di sebelah kanan tanda sama adalah sedikit lebih rumit. Saya kini merujuk kepada new Scanner(System.in);
Yang berkata, tiada apa-apa perkara ghaib berlaku di sini sama ada.
Dalam kod ini, kami memberitahu mesin Java: buat objek baharu (kata new
kunci) yang jenisnya ialah Scanner
, menghantar objek System.in
sebagai sumber data untuk Scanner
objek yang baru dibuat.
Selepas melaksanakan keseluruhan baris ini, kami akan mempunyai Scanner
pembolehubah bernama console
yang program kami akan gunakan untuk membaca data dari papan kekunci.
4. Senarai kaedah
Dalam contoh di atas, Scanner
console
pembolehubah kami menyimpan rujukan kepada Scanner
objek.
Untuk memanggil kaedah pada objek yang dirujuk oleh pembolehubah, anda menulis noktah selepas nama pembolehubah, diikuti dengan nama kaedah dan sebarang argumen. Penampilan umum arahan adalah seperti berikut:
variable.method(arguments);
Contoh:
System.out.println("Hello");
System.out.println(1);
Jika anda tidak bercadang untuk menghantar hujah kepada fungsi, maka anda hanya menulis kurungan kosong:
variable.method();
Contoh:
System.out.println();
5. Input konsol
Apabila kita mempunyai Scanner
objek, mudah untuk mendapatkan data dari papan kekunci.
Untuk membaca baris dari papan kekunci , anda memerlukan arahan ini:
String str = console.nextLine();
Apabila pelaksanaan program mencapai baris ini, ia akan berhenti seketika dan menunggu pengguna memasukkan data dan tekan enter. Kemudian semua yang dimasukkan pengguna disimpan dalam pembolehubah str
.
Untuk membaca nombor dari papan kekunci , anda memerlukan arahan ini:
int number = console.nextInt();
Semuanya di sini adalah seperti arahan sebelumnya. Apabila pelaksanaan program mencapai baris ini, ia akan berhenti seketika dan menunggu pengguna memasukkan data dan tekan enter. Selepas itu, semua yang dimasukkan pengguna ditukar kepada nombor dan disimpan dalam pembolehubah number
.
Jika pengguna memasukkan data yang tidak boleh ditukar kepada integer, program akan menjana ralat dan keluar.
Untuk membaca nombor pecahan dari papan kekunci , anda memerlukan arahan ini:
double number = console.nextDouble();
Pernyataan ini hampir sama dengan yang mempunyai nextInt()
kaedah, hanya ia menyemak bahawa data yang dimasukkan boleh ditukar kepada nombor double
.
Contoh program yang membaca dua nombor dari papan kekunci dan memaparkan jumlahnya pada skrin:
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 boleh memasukkan beberapa nombor pada satu baris, memisahkannya dengan ruang: kaedah kelas Scanner
tahu cara mengendalikannya. Yang berkata, program membaca nombor hanya selepas pengguna menekan Enter
.
6. Kaedah lain Scanner
kelas
By the way, kaedah di atas bukanlah semua yang Scanner
ditawarkan oleh kelas. Senarai lengkap kaedah kelihatan seperti ini:
Kaedah | Penerangan |
---|---|
|
Membaca data dan menukarkannya kepada abyte |
|
Membaca data dan menukarkannya kepada ashort |
|
Membaca data dan menukarnya kepada anint |
|
Membaca data dan menukarkannya kepada along |
|
Membaca data dan menukarkannya kepada afloat |
|
Membaca data dan menukarkannya kepada adouble |
|
Membaca data dan menukarkannya kepada aboolean |
|
Membaca satu "token". Token dipisahkan dengan ruang atau tekan kekunci enter |
|
Membaca seluruh baris |
Terdapat juga kaedah yang membolehkan anda menyemak token seterusnya dalam input tanpa benar-benar mengambilnya (untuk mengetahui kaedah yang hendak digunakan untuk membacanya).
Kaedah | Penerangan |
---|---|
|
byte Adakah terdapat Bolehkah input ditukar kepada byte ? |
|
short Adakah terdapat Bolehkah input ditukar kepada short ? |
|
int Adakah terdapat Bolehkah input ditukar kepada int ? |
|
long Adakah terdapat Bolehkah input ditukar kepada long ? |
|
float Adakah terdapat Bolehkah input ditukar kepada float ? |
|
double Adakah terdapat Bolehkah input ditukar kepada double ? |
|
boolean Adakah terdapat Bolehkah input ditukar kepada boolean ? |
|
Adakah terdapat token lain? |
|
Adakah terdapat baris lain? |
7. Membaca data daripada rentetan
Kami sebelum ini menyebut bahawa Scanner
kelas boleh membaca data daripada pelbagai sumber. Salah satu sumber tersebut ialah rentetan teks .
Ia kelihatan seperti ini:
String str = "text";
Scanner scanner = new Scanner(str);
Apabila mencipta Scanner
objek, kami memasukkan rentetan str
dan bukannya System.in
objek. Dan kini scanner
objek akan membaca data daripada rentetan. Contoh:
Kod program: | Penjelasan: |
---|---|
|
// a == 10;
// b == 20;
Output skrin akan menjadi: |
GO TO FULL VERSION