Sunteți pe pagina 1din 3

Laborator 2

Citirea datelor de la tastatur. Instruciuni de control n


Java.
Pachetul java.io pune la dispoziie un set de clase cu ajutorul crora se
realizeaz operaiile de intrare/ieire ntr-un program Java. Deja s-a folosit in
exemplele anterioare operatia println care afieaza datele pe ecran (consola
standard de ieire).
In Java operaiile de intrare/ieire se bazeaz pe conceptul de flux de date
(stream). Un flux de date este o secven de date care se citete de la o sursa
extern - caz n care avem de a face cu un flux de intrare (input stream) sau se
trimite spre o destinaie extern - flux de ieire (output stream).
Pentru operaiile de intrare/ieire cea mai frecvent sursa extern este tastatura,
iar destinaia este ecranul monitorului. Acestea se mai numesc i suporturi
standard de intrare, respectiv ieire.
Corespunztor suporturilor standard, n Java exist dou obiecte predefinite:
System.in pentru tastatur i System.out pentru monitor.
Clasa care modeleaz citirea unei linii dintr-un flux de intrare este
BufferedReader, prin funcia sa membr readLine. Aceasta funcie nu are
parametrii, iar execuia ei are ca efect citirea din fluxul de intrare a unei secvene
de caractere pn la ntlnirea caracterului de sfrit de linie. Operaia
returneaz un obiect String care conine caracterele citite, dar fr a include i
caracterul linie nou.
Dac citirea NU se poate desfura, operaia emite o excepie de tip
IOException . De aceea, semntura unei funcii care apeleaz metoda readLine
trebuie
s
conin
clauza
throws
IOException.
Pentru citirea de la tastatura, obiectul BufferedReader se creaz astfel:
BufferedReader fluxIntrare = new BufferedReader(new
InputStreamReader(System.in));
Citirea unui ir de caractere se poate realiza cu apelul:
sirIntrare = fluxIntrare.readLine();
Deoarece readLine ntoarce ntotdeauna un String, pentru citirea unui numr se
va apela ulterior una din funciile Integer.parseInt(sirIntrare),
Long.parseLong(strIntrare),
Double.valueOf(strIntrare)
sau
Float.valueOf(strIntrare).

Sarcina 1
Creati o clasa Operatii , apoi compilai i executai programul urmtor :

import java.io.*;
/**
* Clasa Operatii se foloseste pentru a demonstra
* operatorii si operatiile de I/O la consola
*
public class Exp1 {
/** Metoda principala a aplicatiei
* @param args tablou continand parametrii din linia de comanda
* @return Nu returneaza nimic
* @exception exceptions Se trateaza exceptiile de intrare/iesire
*/
public static void main(String args []) throws IOException {
int n1, n2; // notele studentului
double inaltimea; // inaltimea studentului
String linie; // buffer pentru linia de intare
String nume; // numele studentului
BufferedReader fluxIntrare = new BufferedReader (new
InputStreamReader (System.in)); // se creaza fluxul de citire
System.out.println("Numele: ");
nume = fluxIntrare.readLine(); // se citeste o linie
System.out.println("Inaltimea: ");
linie = fluxIntrare.readLine(); // se citeste o linie
inaltimea = Double.valueOf(linie).doubleValue(); // se face
conversia sir->numar
System.out.println("Nota 1: ");
linie = fluxIntrare.readLine(); // se citeste o linie
n1 = Integer.parseInt(linie); // se face conversia sir->numar
System.out.println("Nota 2: ");
linie = fluxIntrare.readLine(); // se citeste o linie
n2 = Integer.parseInt(linie); // se face conversia sir->numar
linie = "Persoana "+nume;
linie += " are inaltimea "+inaltimea;
linie += " si are media notelor "+(((double)n1+n2)/2)+"!";
System.out.println(linie);
fluxIntrare.close(); //se inchide fluxul
}
}

Instruciuni de control
1. IF, SWITCH
Sarcina 2: Compilai i executai urmtorul program :
public class Exp2 {
public static void main(String args[]) {
int nota1 = 8;
int nota2 = 9;
int min;
String mesaj;

if (nota1>nota2)
System.out.println("nota1>nota2");
else
{
System.out.println("nota2>nota1");
min = nota1;
}
min = (nota1<nota2) ? nota1 : nota2;
System.out.println("Nota minima: "+min);
switch (nota1) {
case 4: mesaj = " nesatisfacator"; break;
case 5: case 6: mesaj = "satisfacator"; break;
case 7: case 8: case 9: mesaj = "bine"; break;
case 10: mesaj = "foarte bine"; break;
default: mesaj = "nota gresita";
}
System.out.println("Calificativul pentru nota1 este "+mesaj);
}
}

Sarcina 3: Modificai instructiunile programului astfel nct notele s fie citite de


la tastatura;

2. WHILE, DO-WHILE, FOR


Ce se afieaz dup execuia urmtoarelor secvene :
public class While2
{ public static void main (String args[])
{ int i ;
i = 1 ;
while (i <= 5)
{ System.out.print ("Salut! ") ;
System.out.println (i + " ori ") ;
i++ ;
}
}
}
public class For3
{ public static void main (String args[])
{ int i, j ;
for (i=1 , j=3 ; i<=5 ; i++, j+=i)
{ System.out.println ("i = " + i + "
}
}
}

j = " + j) ;

Sarcina 4: Scriei un program n care s utilizai toate cele trei structuri


repetitive pentru exemplificarea calculului sumei primelor n numere pare, unde n
este un numr ntreg citit de la tastatur