Skener metoda u Javi

Skener metoda u Javi

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Radim program u Javi koji treba da ispita korisnika sledeće;


Koliko ima godina?
Kako se zove?


Tu se koristi input (skener) metoda, ali mi nije baš najjasnije.

import java.util.Scanner; public class skener {    public static void main(String[] args) {       Scanner kb = new Scanner(System.in);       byte godiste;       String ime;              System.out.println("Koliko si star? ");       godiste = kb.nextByte();       Scanner kb1 = new Scanner(System.in);       System.out.println("Kako se zoveš? ");       ime = kb1.nextLine();       char c = ime.charAt(0);       System.out.println("Ti imaš " + godiste + " godina. Tvoje ime je " + ime + ".");       }     }

Trebalo bi da je to to. Imam sada par pitanja.

1. Šta znači Scanner kb = new Scanner(System.in); ?
2. Koji će mi char c = ime.charAt(0); , kada ga nisam ni koristio? Dali se radi o varijabli c ili nekoj funkciji?

Sad, pretpostavljam da je ovo Scanner kb ime skenera. new Scanner dodaje novi skener. byte je brojevni unos korisnika, a String je slovni.

Nakon toga ide godiste = kb.nextByte();, šta mu sad to dođe? Ako je tačna moja prva pretpostavka, onda je ovo Scanner kb1 = new Scanner(System.in); isto što i ono malo pre, samo što se radi o drugom skeneru.

Najviše me muči ovaj deo:

char c = ime.charAt(0);



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Prvo da naglasim da za čitanje ulaznih parametara ne moraš da koristiš Scanner klasu. To je samo pomoćna klasa koja ti olakšava čitanje podataka iz datoteka, stringova ili bilo kakvih stream-ova.

1. To znači da praviš instancu klase Scanner koja će podatke uzimati sa standardnog ulaza (uglavnom je to tastatura). Sve operacije koje budeš kasnije pozivao nad tim objektom, će raditi s podacima koji tolaze iz tog izvora.
2. Time u promenljivoj c dobijaš prvo slovo imena. Možda je autor primera hteo da doda i prikaz inicijala, ali se kasnije predomislio.
3. nextByte funkcija klase Scanner, čita podatke iz izvora i vraća ti 8bitnu vrednost sa znakom. U slučaju da sledeća vrednost u izvoru nije Byte, dobijaš grešku.
4. Ne znam zašto je autor ovog primera odlučio da napravi još jednu instacu Scanner objekta (kb1). Mogao si samo opet da iskoristiš prvu instancu i za čitanje imena.



offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Citat:1. To znači da praviš instancu klase Scanner koja će podatke uzimati sa standardnog ulaza (uglavnom je to tastatura).

Aha, zato je dakle ovo u zagradi (System.in); ? Kao ulaz?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ne razumem pitanje Smile

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Gledaj, to Scanner kb = new Scanner(System.in); , skenira ono što unese korisnik (kao in - ulazno, out - izlazno). Kao kod System.out.println();, tekst se ispisuje ne ekranu, to je izlazni podatak.

Jeli sam u pravu ili ne? Smile

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

To Scanner kb = new Scanner(System.in); kreira instancu klase Scanner koja kao izvor podataka uzima podatke sa standardnog ulaza. U većini slučajeva je to tastatura, ali može biti i datoteka ili nešto treće u zavisnosti od toga šta je mapirano na standardni ulaz. Ne smeš se oslanjati na to da je System.in ulaz sa tastature.

System.out je standardni izlaz, koji je u većini slučajeva ispis u konzolu, ali i on može biti datoteka ili nešto treće. I ovde se ne smeš oslanjati na to da će System.out ispisivati podatke na ekran.

Više o standardnom ulazu i izlazu možeš naći ovde: http://en.wikipedia.org/wiki/Standard_streams

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Na to sam i mislio. Hvala za link Smile

Ko je trenutno na forumu
 

Ukupno su 1144 korisnika na forumu :: 35 registrovanih, 7 sakrivenih i 1102 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., cavatina, CikaKURE, dijica, Dimitrise93, Djokislav, Griffon vulture, helen1, ikan, Ilija Cvorovic, Karla, Krvava Devetka, kubura91, kybonacci, Leonov, Marko Marković, mercedesamg, Mercury, mikrimaus, MiroslavD, nemkea71, NoOneEver Dreams, ObelixSRB, opt1, Oscar, Pikac-47, procesor, Srle993, stegonosa, suton, Trpe Grozni, Vladko, VP6919, zzapNDjuric99, |_MeD_|