Java ulazne i izlazle operacije uključuju korišćenje tokova. Tok je apstraktna reprezentacija (predstavljanje) ulaznog ili izlaznog uređaja koji je izvor ili odredište za podatke. U tok se mogu upisivati podaci i iz toka se mogu čitati podaci. Tok se može zamisliti kao niz bajtova koji teku u ili iz programa.
Kada upisujemo podatke u tok, tok se tada naziva izlazni tok. Izlazni tok se odnosi na bilo koji uređaj kome se može proslediti niz bajtova (datoteka - fajl na disku ili udaljenom računaru, štampač, monitor ...).
Podaci se čitaju iz ulaznog toka. Po pravilu to može biti bilo koji serijski izvor podataka ( datoteka, tastatura, udaljeni računar).
Glavni razlog za korišćenje tokova za osnovne ulazne i izlazne operacije jeste da se obezbedi nezavisnost programskog koda u odnosu na uređaj koji se koristi (time ne brinemo o karakteristikama svakog uređaja sa kojim radimo i time programi rade na mnoštvu ulazno-izlaznih uređaja bez ikakve izmene izvornog koda).
Ulazno-izlaznim operacijama tokova upravlja paket java.io.
U našem radu, do daljnjeg ćemo za izlaz na ekran (monitor) u konzolnom režimu koristiti funkcije System.out.print i System.out.println koje smo već koristili.
Primer. Izračunavanje obima pravougaonika:
import java.util.Scanner; //ovu liniju dodaje kompajler sam
public class ObimPravougaonika {
public static void main(String[] args) {
Scanner ulaz=new Scanner(System.in); //Klasa koju koristimo za ulaz
double a,Obim;
int b;
System.out.print("Unesi stranice pravougaonika.\na=");
a=ulaz.nextDouble(); //realni broj
System.out.print("b=");
b=ulaz.nextInt(); //celi broj
Obim=2*a+2*b;
System.out.print("Obim pravougaonika stranica a="+a+" i b="+b+" je "+Obim);
}
}
Unos i prikaz podataka u Android-u
Pošto u Androidu nemamo konzolu, za vezbe osnovnih, uvodnih metoda programiranja koristićemo komponente:
- tekstualne oznake (
TextView
) za poruke korisniku, - teksualna polja (
Text Fields (EditText)
) za unos i prikaz podataka, i - dugme (
Button
) za pokretanje izračunavanja.
Komponente na formu postavljamo u okviru activity_.....xml
, ili prevlačenjem u režimu dizajna ili ručnim upisom u režimu teksta.
Za gorenavedeni primer izračunavanja obima pravougaonika,
A. stavićemo na formu:
- tekstualne oznake sa natpisima (nebitni nazivi): stranica a, stranica b i obim,
- tekstualna polja tipa (
inputType
):number
: tbNa (tekst boks, broj, a), tbNb, tbNob, i - dugme dIzracunaj
B. napišemo metodu
But
public void IzracunajObim(){
String tekstPolja=((EditText) findViewById(R.id.tbNDa)).getText().toString();
int a=Integer.parseInt(tekstPolja);
tekstPolja=((EditText) findViewById(R.id.tbNDb)).getText().toString();
int b=Integer.parseInt(tekstPolja);
int obim=2*a+2*b;
EditText tObim=(EditText) findViewById(R.id.tbNDob);
tObim.setText(Integer.toString(obim));
}
C. Povežemo metodu sa klikom na dugme (OnClick
)
Ovo možemo da uradimo na dva načina:
C1. u activity_.....xml
u osobinama dugmeta u polje OnClick
unesemo ime metode IzracunajObim
. U tekstualnom režimu to izgleda ovako:
<Button
android:text="Izracunaj"
...
android:layout_below="@+id/tbNDob"
android:onClick="IzracunajObim"/>
C2. u klasi onCreate
dodajemo kod za osluškivanje i hvatanje događaja onClick:
Button dugmeIzr=(Button)findViewById(R.id.dIzracunaj);
dugmeIzr.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
IzracunajObim();
}
});