1. Pagbabasa mula sa console gamitSystem.in
Sa mga nakaraang aralin, nakilala namin ang mga utos para sa pagpapakita ng impormasyon sa screen. Upang gawin ito, ginamit namin ang System.out
bagay at print()
ang println()
mga pamamaraan nito. Ito ay simple at maginhawa.
Ngunit, tulad ng nahulaan mo na, ang pagpapakita ng impormasyon sa screen ay hindi sapat para sa amin. Ang layunin ng karamihan sa mga programa ay gumawa ng isang bagay na kapaki-pakinabang para sa gumagamit. Nangangahulugan iyon na napakadalas na kinakailangan para sa user na makapagpasok ng data mula sa keyboard.
Tulad ng nangyari sa output, mayroon din kaming espesyal na object para sa data input — System.in
. Ngunit, sa kasamaang-palad para sa amin, hindi ito maginhawa gaya ng gusto namin. Nagbibigay-daan ito sa amin na basahin ang data mula sa keyboard nang paisa -isa .
Upang mapabuti ito, gagamit kami ng isa pang klase na, kapag ipinares sa System.in
bagay, ay magbibigay sa amin ng lahat ng kailangan namin. Sa mahabang panahon ngayon, ang Java ay may mga klase na angkop sa bawat okasyon. At makikilala natin ang isa sa kanila ngayon.
2. Scanner
klase
Ang Scanner
klase (buong pangalan: java.util.Scanner
) ay maaaring magbasa ng data mula sa iba't ibang mapagkukunan, hal. console, mga file, at Internet. Kung gusto nating basahin nito ang data mula sa keyboard, dapat nating ipasa ang System.in
object bilang argumento na magsisilbing data source. At pagkatapos ay malalaman ng bagay ng Scanner kung ano ang gagawin dito.
Ang pagbabasa mula sa keyboard gamit ang isang Scanner
bagay ay magiging ganito:
Code | Paliwanag |
---|---|
|
Lumilikha kami ng isang Scanner bagay. Nagbasa kami ng isang linya ng text mula sa keyboard. Nagbasa kami ng isang numero mula sa keyboard. |
Mukhang madali, ngunit ito ba ay talagang simple?
Sa tingin ko dapat ay mayroon kang isang bungkos ng mga katanungan, at ngayon ay sasagutin natin ang mga ito.
Ngunit una, ipakita natin ang isang halimbawa ng isang kumpletong programa na gumagamit ng Scanner
klase:
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. Paglikha ng isang Scanner
bagay
Ang unang tanong ay ano ang linyang ito Scanner console = new Scanner (System.in);
?
Maaaring nakakalito ang linyang ito, ngunit makikita mo ang mga katulad na bagay sa lahat ng oras. Kaya sa tingin namin ay mahalagang ipaliwanag kung ano ang nangyayari dito.
Alalahanin kung paano kami karaniwang gumagawa ng variable na may text:
String str = "text";
Una, isinusulat namin ang uri ng variable ( String
), pagkatapos ay ang pangalan nito ( str
), at sa wakas, pagkatapos ng equals sign, isinusulat namin ang halaga.
Ang aming nakakagulat na linya ay talagang pareho:
Scanner console = new Scanner(System.in);
Ang lahat sa kaliwa ng equals sign ay ang deklarasyon ng variable na pinangalanan console
na ang uri ay Scanner
. Sa halip ay maaari mo itong tawagan s
o scanner
o kahit keyboard
. Pagkatapos ang code ay magiging ganito:
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();
Sa tingin ko ay ginagawang mas malinaw ang lahat.
Ngunit ang code sa kanan ng equals sign ay medyo mas kumplikado. I'm now referring to new Scanner(System.in);
That said, wala rin namang supernatural na nangyayari dito.
Sa code na ito, sinasabi namin sa Java machine: lumikha ng bagong object (ang new
keyword) na ang uri ay Scanner
, pagpasa sa System.in
object bilang data source para sa bagong likhang Scanner
object.
Pagkatapos isagawa ang buong linyang ito, magkakaroon tayo ng Scanner
variable na pinangalanan console
na gagamitin ng ating program para magbasa ng data mula sa keyboard.
4. Listahan ng mga pamamaraan
Sa halimbawa sa itaas, ang aming Scanner
console
variable ay nag-iimbak ng isang reference sa isang Scanner
bagay.
Upang tumawag ng mga pamamaraan sa isang bagay na isinangguni ng isang variable, sumulat ka ng tuldok pagkatapos ng pangalan ng variable, na sinusundan ng pangalan ng pamamaraan at anumang mga argumento. Ang pangkalahatang hitsura ng utos ay ang mga sumusunod:
variable.method(arguments);
Mga halimbawa:
System.out.println("Hello");
System.out.println(1);
Kung hindi mo planong ipasa ang mga argumento sa isang function, sumulat ka lang ng mga walang laman na panaklong:
variable.method();
Halimbawa:
System.out.println();
5. Console input
Kapag mayroon tayong Scanner
bagay, madaling makakuha ng data mula sa keyboard.
Upang basahin ang isang linya mula sa keyboard , kailangan mo ang command na ito:
String str = console.nextLine();
Kapag ang pagpapatupad ng programa ay umabot sa linyang ito, ito ay i-pause at maghihintay para sa user na magpasok ng data at pindutin ang enter. Pagkatapos ang lahat ng ipinasok ng user ay nakaimbak sa variable str
.
Upang basahin ang isang numero mula sa keyboard , kailangan mo ang command na ito:
int number = console.nextInt();
Lahat dito ay tulad ng naunang utos. Kapag ang pagpapatupad ng programa ay umabot sa linyang ito, ito ay i-pause at maghihintay para sa user na magpasok ng data at pindutin ang enter. Pagkatapos nito, lahat ng ipinasok ng user ay na-convert sa isang numero at nakaimbak sa number
variable.
Kung ang user ay nagpasok ng data na hindi mako-convert sa isang integer, ang program ay bubuo ng isang error at lalabas.
Para magbasa ng fractional number mula sa keyboard , kailangan mo ang command na ito:
double number = console.nextDouble();
Ang pahayag na ito ay halos kapareho sa isa na may nextInt()
pamamaraan, tinitingnan lamang nito na ang ipinasok na data ay maaaring ma-convert sa isang double
numero.
Halimbawa ng isang program na nagbabasa ng dalawang numero mula sa keyboard at ipinapakita ang kanilang kabuuan sa screen:
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);
}
}
Ang gumagamit ay maaaring magpasok ng ilang mga numero sa isang linya, na naghihiwalay sa kanila ng mga puwang: alam ng mga pamamaraan ng Scanner
klase kung paano ito pangasiwaan. Sabi nga, binabasa lang ng program ang mga numero pagkatapos pindutin ng user ang Enter
.
6. Iba pang paraan ng Scanner
klase
Sa pamamagitan ng paraan, ang mga pamamaraan sa itaas ay hindi lahat na Scanner
inaalok ng klase. Ang kumpletong listahan ng mga pamamaraan ay mukhang ganito:
Pamamaraan | Paglalarawan |
---|---|
|
Nagbabasa ng data at nagko-convert nito sa abyte |
|
Nagbabasa ng data at nagko-convert nito sa ashort |
|
Binabasa ang data at kino-convert ito sa isangint |
|
Nagbabasa ng data at nagko-convert nito sa along |
|
Nagbabasa ng data at nagko-convert nito sa afloat |
|
Nagbabasa ng data at nagko-convert nito sa adouble |
|
Nagbabasa ng data at nagko-convert nito sa aboolean |
|
Nagbabasa ng isang "token". Ang mga token ay pinaghihiwalay ng mga puwang o pagpindot sa enter key |
|
Binabasa ang isang buong linya |
Mayroon ding mga pamamaraan na nagbibigay-daan sa iyong suriin ang susunod na token sa input nang hindi aktwal na kinukuha ito (upang malaman kung aling paraan ang gagamitin upang basahin ito).
Pamamaraan | Paglalarawan |
---|---|
|
meron bang byte ? Maaari bang ma-convert ang input sa isang byte ? |
|
meron bang short ? Maaari bang ma-convert ang input sa isang short ? |
|
meron bang int ? Maaari bang ma-convert ang input sa isang int ? |
|
meron bang long ? Maaari bang ma-convert ang input sa isang long ? |
|
meron bang float ? Maaari bang ma-convert ang input sa isang float ? |
|
meron bang double ? Maaari bang ma-convert ang input sa isang double ? |
|
meron bang boolean ? Maaari bang ma-convert ang input sa isang boolean ? |
|
May iba pa bang token? |
|
May ibang linya ba? |
7. Pagbabasa ng data mula sa isang string
Nauna naming nabanggit na ang Scanner
klase ay maaaring magbasa ng data mula sa iba't ibang mga mapagkukunan. Ang isa sa mga pinagmumulan ay isang string ng teksto .
Mukhang ganito:
String str = "text";
Scanner scanner = new Scanner(str);
Kapag lumilikha ng Scanner
bagay, ipinapasa namin ang string str
sa halip na ang System.in
bagay. At ngayon ang scanner
bagay ay magbabasa ng data mula sa string. Halimbawa:
Program code: | Paliwanag: |
---|---|
|
// a == 10;
// b == 20;
Ang output ng screen ay magiging: |