24/10/2018

Java 10: Ulaz i izlaz

Do sada smo u lekcijama sve promenljive ručno unosili u kod, međutim u realnim programima to i nema toliko smisla. Ne želimo da napravimo program koji sabira 5 i 6, već program koji može da sabere bilo koja dva broja koja korisnik unese. Možda želimo da otvorimo neki tekstualni fajl i da ga menjamo itd. Za to nam služe ulazno izlazni podsistemi. Jedan od izlaznih podsistema i uređaja smo već koristili. Pomoću print() funkcije smo ispisivali razne tekstove u konzolu. Međutim izlaz mogu biti i druge stvari, tekst možemo smestiti u txt fajl na hard disku na primer. U ovoj lekciji bavićemo se ulazom i izlazom pomoću terminala, dok ćemo u sledećoj pomoću fajla.

Štampanje na ekran

Ovo je nešto što smo koristili od prve „Hello World“ lekcije, a kratko smo pričali o ovome i u lekciji o funkcijama, ideja je da se prostom funkcijom neki rezultat programa ispiše na ekran. Međutim pored prostog ispisa Java nam nudi i neke naprednije mogućnosti. Dve glavne funkcije za ispis na ekran su
System.out.print();
System.out.println();
Razlika je u tome što println() dodaje novi red dok se kod print() kursor i dalje zadržava na postojećem redu, pa će tako sledeći ispis biti nastavljen u redu u kome se nalazio i prethodni. Obe funkcije kao argument prihvataju ono što želimo da ispišemo, a kao argument može s proslediti bilo koji tip.

Formatiranje teksta

Još jedna veoma korisna funkcija je
Syste.out.printf()
Ona služi za formatiranje. Šta to znači? Pa imali smo primere gde želimo u sred nekog teksta da dodamo vrednost promenljive. To smo radili tako što smo nakon teksta dodali karakter „+“, a zatim vrednost promenljive. Isto ovo nam omogućava funkcija printf(). Osim što će kod dužih tekstova gde postoji više promenljivih čitljivost biti na većem nivou isti ispis zahteva manje računarskih resursa u odnosu na spajanje teksta sa znakom +. Prvi argument funkcije je tekst koji se ispisuje, međutim u njega možemo upisati posebne escape sequence koje počinju sa „%“. One služe da kažu Javi da tu želimo da upišemo neku promenljivu, sledeći karakter nakon „%“ predstavlja tip promenljive o kojoj se radi. Nakon ovog argumenta potrebno je funkciji proslediti one argumente koje želimo da upišemo. Funkcionisanje ove funkcije najbolje je videti na primerima:
Kod:
System.out.printf("celobrojni: %d\n", 356);    

System.out.printf("razlomljeni: %f\n", 3.141);


Ispis:

celobrojni: 356

razlomljeni: 3.141000 

Zaokruživanje decimalnih brojeva.

Prilikom formatiranja teksta moguće je posle znaka „%“ uneti i preciznost decimalnih brojeva. tj. vrednost koliko decimalnih mesta želimo da nam se ispiše to se postiže dodavanjem karaktera „.“ A zatim broja decimalnih mesta. Na primer „%.3f “ (decimalni broj sa 3 decimalna mesta)

Kod:
System.out.printf("razlomljeni: %f\n", 3.141);
System.out.printf("razlomljeni: %6.2f\n", 3.141);

Ispis:

razlomljeni: 3.141000

razlomljeni:   3.14     

Unos sa tastature

Do sada smo sve vrednosti promenljiva kucali u kodu, a korisnik programa zapravo nije imao nikakvu  interakciju sa našim programom, sve što je moga oda uradi je da pokrene. Kod većine programa interakcija korisnika i programa je neophodna.  Kod kalkulatora je neophodno uneti brojeve koji se sabiraju itd. Za to nam služi unos sa tastature. Ne želimo da u kodu ukucamo da su dva broja koja se sabiraju 5 i 6, već želimo da nas računar pita koje brojeve želimo da saberemo.

Za postizanje ovoga nam služi Scanner. Pre svega potrebni ga je inicijalizovati i upisati iz kog ulaza želimo da čitamo podatke:

Scanner sc = new Scanner(System.in);

Nakon toga je potrebno pozvati funkciju koja služi za čitanje ulaza. U zavisnosti od toga koji tip podataka želimo postoje sledeće funkcije

String s = sc.nextLine();

int i = sc.nextInt();

float f = sc.nextFloat);
Kod:
Simport java.util.Scanner;

public class HelloWorld{

    public static void main(String []args){
      Scanner sc = new Scanner(System.in);
      
      System.out.print("Unesi string: ");
      String s = sc.nextLine(); // U konzolu unosimo "Hello World"
      System.out.printf("Uneti string je: %s\n",s);
      

      System.out.print("Unesi broj: ");
      Double d = sc.nextDouble(); // U konzolu unosimo "Hello Wworld"
      System.out.printf("Uneti string je: %f\n", d);
      
    }
}
Ispis:

Unesi string: Hello World
Uneti string je: Hello World
Unesi broj: 42.56789
Uneti string je: 42.567890

Share

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *