1.

Următorul program pune in evidenţă creearea unor instanţe pentru o clasă:
class Exemplu { int x; //constructor implicit Exemplu() {System.out.println("constructor implicit");} //constructor explicit Exemplu(int x){this.x=x;} //instanta creata explicit la momentul initializarii clasei static Exemplu primulX=new Exemplu(1); //metoda de actualizatr a campului x pentru obiectul curent public void setX(int x) {this.x=x;} //metosa necesara pentru afisarea explicita a unei instante din clasa Exemplu public String toString(){ return"x= "+x; } }//sfarsitul def clasei Exemplu class DiferiteInstante{ public static void main(String args[]){ System.out.println("primulX: " + Exemplu.primulX); //apelul constructorului implicit Exemplu obiectDoi=null; //creare explicita folosind newInstance() try{ obiectDoi=(Exemplu)Class.forName("Exemplu").newInstance(); }catch(Exception e) { System.out.println(e);} System.out.println("obiectDoi: " + obiectDoi); obiectDoi.setX(2); System.out.println("obiectDoi: "+obiectDoi); //creare unui obiect folosind operatorul new Exemplu obiectTrei=new Exemplu(3); System.out.println("obiecttrei: "+obiectTrei); } }

Date iesire: primulX: x=1 | constructor implicit | obiectDoi: x=0 | obiectDoi: x=2 | obiectDoi: x=3. Captură:

2) Programul de mai jos pune în evidenţă utilizarea tipurilor de date in Java:

import java.util.Random; import java.io.*; class Zaruri{ public static void main(String args[]) { //instantieri Random r=new Random(); int[] zar=new int[2]; for(int k=0;k<10;k++){ for(int i=0;i<2;i++){ zar[i]=(int)(r.nextDouble()*6)+1; } System.out.println("\nZarurile sunt: " +zar[0]+" " + zar[1]); if(zar[0]==zar[1]) System.out.println("Ati castigat! Zarurile sunt " + "egale!"); else System.out.println("Ati pierdut! Zarurile nu sunt" + "egale!"); //asteptam apasarea tastei ENTER System.out.print("Apasati tasta ENTER pentru a" + "continua..."); try{ //citim un caracter de la tastatura System.in.read(); //eliminam celelalate caractere citite System.in.skip(System.in.available()); }catch(IOException e) {System.out.println(e);} } System.out.println("Aplicatia s-a teminat!"); } }

Aplicati are ca date de iesire doua numere aleatoare. Captura

3) Programul de mai jos va scoate in evidenta aparitia unei exceptii aritmetice:

class ExceptiiNumerice{ public static void main (String args[]) { int a=3, b=0; try{ System.out.println("a/b= "+a/b); }catch(ArithmeticException e){ System.out.println("Nu este permisa impartirea la zero:" +e.getMessage()); } } }

Date de intrare: a=3; b=0. Date de iesire: "nu este permisa impartirea la 0/by0" Captura:

4) Program Java care pune în evidenta domeniul variabilelor:
class DeclaratiiVariabileLocale{ static int x=6; public static void main (String[] args){ System.out.println("x="+x); int x=(x=3)*4; System.out.println("x="+x); } }

Date de intrare: x=6; x=3. Date de iesire: x=12.

5) Programul Java de mai jos pune în evidenta comportarea conversiilor la „capetele" domeniului tipului float:
public class ConversiiExpliciteFlotante{ public static void main(String[] args){ float min=Float.NEGATIVE_INFINITY; float max=Float.POSITIVE_INFINITY; System.out.println("long:"+(long)min+""+(long)max); System.out.println("int:"+(int)min+""+(int)max); System.out.println("char:"+(int)(char)min+""+(int)(char)max); System.out.println("short:"+(short)min+""+(short)max); System.out.println("byte:"+(byte)min+""+(byte)max); } }

Date de iesire: long:-92233720368547758089223372036854775807 int:-21474836482147483647 char:065535
short:0-1 byte:0-1 Captura:

6) Program care citeste un numar arbitrar de numere în virgula flotanta de la tastatura, apoi afiseaza suma acestora:
import java.io.*; public class DoWhile{ public static void main(String[] args){ BufferedReader tastatura=new BufferedReader(new InputStreamReader(System.in),1); double suma=0.0,numarCitit=0.0; String linie=""; do{ try{ System.out.println("Dati un nr in virgula flotanta"); linie=tastatura.readLine(); Double tempDouble=Double.valueOf(linie); numarCitit=tempDouble.doubleValue(); System.out.println("numarCitit="+numarCitit); suma+=numarCitit; System.out.println("Doriti sa continuati(d/n)?"); System.out.flush(); linie=tastatura.readLine(); System.out.println("Ati tastat "+linie); } catch(IOException e){ System.out.println("Intrare de la tastatura"+e.toString()); System.exit(1); } } while(linie.equals("d")||linie.equals("D")); System.out.println("Suma numerelor citite este"+suma); try{ tastatura.close(); } catch(IOException e){ System.out.println("Eroare inchidere fisier de intrare"+e.toString()); System.exit(2); } }//sfarsitul metodei main() }//sfarsitul definitiei clasei DoWhile

Date de intrare: numarCitit=2.3, numarCitit=45.566 Date de iesire: Suma numerelor citite este47.866

Captura: 7) Programul de mai jos.out.println("S-a executat break eticheta.println("Exceptie:"+e."). metoda1(i).*.io.println("Executam finally!"). else System. public class TestExceptii{ public static void main(String args[]){ for(int i=0.out.random() * 2)==0){ b=true. . programul de mai sus va afisa: "S-a executat break eticheta. } if(b) System.getMessage()).i<2.println("Nu s-a executatreak eticheta.").out.println("Sfarsit caz"+i).out.i++){ try{ System.out. } catch(Exception e){ System. } } Captura: 8) Programul va descrie o metoda care poate arunca exceptii utilizând instructiunea throw: import java." iar la altele:"Nu s-a executat break eticheta " public class BreakIf{ public static void main(String args[]){ boolean b=false. System. } } . break eticheta.println("\nTest caz"+i). eticheta:if ((int)(Math.out. la unele executii. } finally{ System.

println("Incepe metoda1:").} private static void metoda1(int i) throws Exception{ System. System.println("Sfarsit metoda1.out. } }//sfarsitul definitiei clasei TestExceptii Date iesire: "Test caz0 Incepe metoda1: Sfarsit metoda1.out. synchronized(is){ synchronized(is){ System.out.println("Acum obiectul is este inchis de "+" doua ori!"). if(i!=0) throw new Exception("din metoda1")."). Sfarsit caz0 Executam finally! Test caz1 Incepe metoda1: Exceptie:din metoda1 Executam finally! " Captura: 9) Problema pune în evidenta un exemplu simplu de închidere a unei resurse (un obiect al clasei respective): public class InstructiuneaSynchronized{ public static void main(String[] args){ InstructiuneaSynchronized is=new InstructiuneaSynchronized(). } System. } } DATE IESIRE : "Acum obiectul is este inchis de doua ori! Acum obiectul is este inchis o data! Acum obiectul is nu mai este inchis! " .println("Acum obiectul is nu mai este inchis!").println("Acum obiectul is este inchis o data!"). } System.out.out.

} } public class Exceptie{ static void f()throws ExceptiaNoastra{ throw new ExceptiaNoastra(). } public static void main(String[] args){ try{ f().println("S-a aruncat exceptia:"+re). } catch(RuntimeException re){ System. } catch(ExceptiaNoastra en){ System.out.Captura: 10) Program Java care compara aruncarea propriilor exceptii fata de exceptiile sistem (RuntimeException): class ExceptiaNoastra extends Exception{ ExceptiaNoastra(){} ExceptiaNoastra(String s){super(s). } } } Captura: .out.println("S-a aruncat exceptia:"+en).

} catch(ExceptiaNoastra re){ System. } catch(ArrayIndexOutOfBoundsException e){ System.println("S-a aruncat exceptia:"+re).out.out. try{ System. } } } Captura: 12) class ExceptiaNoastra extends Exception{ ExceptiaNoastra(){} ExceptiaNoastra(String s){super(s).println("Exceptie neprinsa"). } catch(ArithmeticException e){ System.println("Depasire de domeniu index vector"+e). } finally{ System.println("y="+y+"z[y]="+z[y]).11) class Exemplu{ public static void main(String args[]){ int x=(int)(Math.println("Problema aritmetica:"+e).} } public class ExceptieFinally{ static void f() throws ExceptiaNoastra{ throw new NullPointerException(). System.random()*10).random()*5). } public static void main(String[] args){ try{ f(). int[]z=new int[5]. int y=(int)(Math.out.out.out. } } }//sfarsitul definitiei clasei ExceptieFinally .out.println("y/x="+(y/x)).

} double radacinaPatrata(){ return Math.close().readLine().out.println("Continuam? (tastati s pentru stop)").Captura: 13) Urmatorul program pune in evidenta sase categorii de variabile care pot aparea.}catch(IOException e) { System.} Radical obiect =new Radical(numar).println("Dati numarul "+ Radical. try{ in=new BufferedReader(new InputStreamReader(System. while(true) { System. } in.println("Citire gresita de la tastatura "+e). linie=in. } catch(NumberFormatException f){ System.equals("S")) break.out. try{ numar=Integer. int nr. BufferedReader in.out.nr=nr.println("Nu ati tastat un numar intreg").parseInt(linie).numarDeNumere).} } } class Radical{ static int numarDeNumere=1.readLine(). System. System.1).in).sqrt(nr). if(linie. Radical (int nr){ this.out.equals("s") || linie. }}//sfarsitul definitiei clasei Radical .radacinaPatrata()). class CitiriIntregi { public static void main(String args[]){ int numar =0. linie=in. numarDeNumere++.out. String linie.println("Radical din "+numar+" este "+obiect.

z = " + z). respectiv 4. } /* definirea unei metode care deriveaza clasa C1 si implementeaza interfata I1 */ class C2 extends C1 implements I1 { int z = 10. obiect. g (5) . // implementarea metodei abstracte din clasa C1 void g(int y) { this.y += y.x += x. obiect.y = 2. } } //. // declararea unei metode void f (int x) { this. } // implementarea metodei mostenita din interfata I1 public void h() { System. } // definirea unei interfete interface I1 { public void h ().out. definirea clasei care va utiliza un obiect de tip C2 public class Testare { public static void main(String[] args) { C2 obiect = new C2(). obiect. y = " + y + ". }} . Captura: 14) // definirea unei clase abstracte abstract class C1 { // declararea datelor membre int x = 1. Date iesire: 2. } //declararea unei metode abstracte abstract void g(int y). g(x) .Date intrare: 4 si 16.println("x = " + x + ". h () .f (4) .

setContent("Test").getContent()). return this. public void setContent(String s){ content=s.println("Eroare la clonare!").clone(). //modificarea originalului ob1. //verificarea celor doua obiecte System.out. //verificarea continutului celor doua obiecte System.equals(ob2)).println(ob1. System. } public String getContent(){ return content. } } Captura: .getContent()==ob2.getContent()==ob2.getContent()).println(ob1. }catch(CloneNotSupportedException e){ System.println(ob1. //clonarea unui obiect ObiectSimplu ob2=(ObiectSimplu) ob1.Captura: 15) Problema ce realizeaza clonarea claselor: //definirea unei clase simple care permite clonarea class ObiectSimplu implements Cloneable{ //declararea unei date membre private String content="". } } } public class Object3{ public static void main(String args[] ){ //crearea unui obiect ObiectSimplu ob1=new ObiectSimplu(). } //supradefinirea metodei clone() public Object clone(){ try{ return super.err.clone().out.out.

println("x="+obiect. //redefinirea metodelor din interfata I2 public int f(){return x. } /*declararea clasei C2 care extinde clasa C1 si implementeaza interfata I2*/ class C2 extends C1 implements I2{ int t=3.} } public class SuperInterfete{ public static void main(String args[]){ //instantierea unui obiect din clasa C2 C2 obiect=new C2().t="+obiect.f()+".h()+". } //declararea intefetei I2 //aceasta va mosteni datele si metode4le membre din I1 interface I2 extends I1{ int y=1. //declararea unei metode(care este abstracta) public int f(). } } Captura: .} public int g(){return y. System. } //declararea clasei C1 class C1{ int z=2.g() +".t).out. public int h(){return z.z="+obiect.16) //declararea interfetei I1 interface I1{ //declararea unei date membre int x=0.y="+obiect.}. public int g().

} Captura: 18) Programul de mai jos pune în evidenta realocarea memoriei pentru un obiect folosind operatorul new si metoda newlnstance () din clasa Class. Increment(){ numarInstante++. class C1{ int x=10.println("S-au creat"+Increment.out. se va apela constructorul Increment numarlnstante. Increment a=new Increment(). La fiecare instantiere a clasei Increment.println("adresa lui obiectUnu="+obiectUnu. public class NumarareInstante{ public static void main(String args[]){ System. System. } } public class TestDealocare{ public static void main(String args[]){ C1 obiectUnu=new C1(8). Class oClasa=null.hashCode()).numarInstante+"instante ale clasei Increment").out. } C1(int x){ this. obiectUnu=new C1(6). try{ oClasa=Class.numarInstante+"instante ale clasei Increment").x=x.forName("C1").17) Declaram un atribut static numar Instante."). C1(){System.out. } .println("S-au creat "+Increment."). System.out. } } class Increment{ static int numarInstante=0.hashCode()).println("adresa lui obiectUnu="+obiectUnu.out.println("Constructor cu un argument. System. care va fi incrementat în constructor.println("Constructor fara argumente. }.out. System.

out. obA.out. } try{ obiectUnu=(C1) oClasa. private B obiectDinB.println("Exceptie:acces ilegal la clasa C1.afiseaza().obB).out.x=x. } catch(InstantiationException e){ System.obA). } } } class A{ private int x.out.println("Exceptie:n-am gasit clasa C1. obA=new A(1.getMessage()).get(). A(int x){ this.newInstance(). . } catch(NullPointerException e){ System. B obB=new B(2.afiseaza(). try{ obB.out.catch(ClassNotFoundException e){ System.println("Exceptie:nu putem instantia clasa C1."+e). } System.get()."+e)."+e).println("Eroare: " + e.hashCode()). } } Captura: 19) Programul de mai jos pune în evidenta o împartire a unei clase în doua clase mai mici echivalente: public class C1{ public static void main (String args[]){ A obA=new A(1).println("adresa lui obiectUnu="+obiectUnu. } catch(IllegalAccessException e){ System.

obiectDinA=null.this. this. } A get() throws NullPointerException{ if(obiectDinA==null) throw new NullPointerException("Obiectul din A este null\n"). this. private A obiectDinA. B(int y){ this. } } Captura: . } A(int x.println("y= " +y). } } class B{ private int y. else return obiectDinA.x=x. } B get() throws NullPointerException{ if(obiectDinB==null) throw new NullPointerException("Obiectul din B este null\n").out.obiectDinA=obiectDinA.B obiectDinB){ this. this. else return obiectDinB.y=y.obiectDinB=null. } void afiseaza(){ System.println("x= " + x).obiectDinB=obiectDinB.A obiectDinA){ this.y=y. } void afiseaza(){ System. } B(int y.out.

ExceptiaNoastraDoi. } class C1 implements I1{ public int f(int x) throws ExceptiaNoastraUnu.f(2)). return x.println(obiectUnu. System.} } class ExceptiaNoastraDoi extends Exception{ ExceptiaNoastraDoi() {super().f(-2)). else throw new ExceptiaNoastraDoi().ExceptiaNoastraDoi{ if(x<0) throw new ExceptiaNoastraUnu(). } .f(-2)). } catch(ExceptiaNoastraDoi e){ System. } interface I2 extends I1{ int f(int x) throws ExceptiaNoastraDoi. } } class C2 implements I2{ public int f(int x) throws ExceptiaNoastraDoi{ if(x<0) throw new ExceptiaNoastraDoi(). System.println(obiectUnu. } } public class TestSuprascriereMetode{ public static void main(String args[]){ C1 obiectUnu=new C1().out. C2 obiectDoi=new C2().println("A aparut o exceptie: " + e). System.out.println("A aparut o exceptie: " + e). try{ System.println(obiectDoi. } catch(ExceptiaNoastraUnu e){ System.out.20) Urmatorul program Java evidentiaza suprascrierea metodelor unei interfete relativ la lista de exceptii care pot fi aruncate: class ExceptiaNoastraUnu extends Exception{ ExceptiaNoastraUnu() {super().out.println(obiectDoi.out.out.f(2)).} } interface I1{ int f(int x) throws ExceptiaNoastraUnu.

io.timp=timp. import java. } //fisierul TV. public int getPutere(). public int getTimpFolosinta().java interface DispozitiveElectronice{ public void setTimpFolosinta(int timp).java. doua clase derivate (TV si Aspirator) din clasa de baza. } public void opreste(){ on=false. } //fisierul Locuinta.java class TV extends Locuinta implements DispozitiveElectronice{ private int timp=0. } public void setTimpFolosinta(int timp){ this. Fisierul de aplicatii este întitulat AplicatieElectronice.*. Avem o interfata DispozitiveElectronice. } public abstract void schimbaVolum(int diferenta). public void schimbaVolum(int diferenta){ volum=volum+diferenta. public void porneste(){ on=true.java abstract class Locuinta{ protected int volum=1. private boolean on.}} Captura 21) Programul Java de mai jos prezinta o aplicatie în care se folosesc interfete. } . o clasa de baza Locuinta. //fisierul DispozitiveElectronice.

java public class AplicatieElectronice{ private BufferedReader tastatura. public void schimbaVolum(int diferenta){ volum=volum+diferenta. } } //fisierul Aspirator. } public int getTimpFolosinta(){ return timp. } public void setTimpFolosinta(int timp){ this. } public int getPutere(){ return 500. } public int getVolum(){ return volum. private int totalPutere.java class Aspirator extends Locuinta implements DispozitiveElectronice{ private int timp=0. .timp=timp. } public int getVolum(){ return volum. } public int getPutere(){ return 100.public int getTimpFolosinta(){ return timp. } } //fisierul AplicatieElectronice.

obiect. } private void citesteTimp(){ try{ tastatura=new BufferedReader(new InputStreamReader(System.in).getTimpFolosinta().totalPutere).out.readLine(). System.citesteTimp().afiseaza("aspirator". int v.timp). public static void main (String args[]){ AplicatieElectronice obiect =new AplicatieElectronice(). aspirator. System.setTimpFolosinta(0).calculeazaPutereConsumata(aspirator).println("Intrare gresita de la tastatura : " +e).tot alPutere).out.obiect.tv.afiseaza("tv". try{ timp=Integer.err.timp). TV tv=new TV(). System.aspirator.1).println("Dati timpul(in minute): "). tv.private int timp. } } catch(IOException e){ System.exit(2). obiect.tv. obiect. } } public void afiseaza(String s.getVolum().setTimpFolosinta(0). } catch(NumberFormatException ex){ System.setTimpFolosinta(obiect. obiect.calculeazaPutereConsumata(tv). obiect. Aspirator aspirator=new Aspirator().setTimpFolosinta(obiect. int timpUtilizat.parseInt(linie). obiect.schimbaVolum(2). aspirator.citesteTimp().getTimpFolosinta(). int putere){ .println("Format de intreg gresit: " +ex).getVolum().exit(3).schimbaVolum(1). aspirator. tv. System.flush(). String linie=tastatura.out.volum.aspirator. obiect. tv.

i < a. 3} }. 3. System. System. System.length. totalPutere=totalPutere + putere. j++) .out.println("Puterea totala a fost " + putere). System."). afiseazaMatrice(v2).getPutere(). {4. } } Date de intrare: 20 si 30 minute.out.out.getTimpFolosinta() * dispozitiv. } static void afiseazaMatrice(int [][] a) { for (int i = 0.println("TV-ul are volumul " +v). } } public void calculeazaPutereConsumata(DispozitiveElectronice dispozitiv){ int putere=dispozitiv. i++) { for (int j = 0.println("Aspiratorul are viteza " +v).out. "). initializeazaUnu (v1).equals("aspirator")){ System. int [][] v2 = { {1.println("Puterea totala a fost " + putere).println("si a fost utilizat timp de " + timpUtilizat + " minute.println("si a fost utilizat timp de " + timpUtilizat + " minute.equals("tv")){ System.out. Date de iesire:"Puterea totala a fost de 2000 respectiv 17000" Captura: 22) Codul Java de mai jos ilustreaza transmiterea (si initializarea) tablourilor bidimensionale ca parametri: public class MatriceParametri { public static void main(String[] args) { int [][] v1 = new int [2] [3]. -4}. } else if(s.length.out. j < a [0]. afiseazaMatrice(v1).if(s. -6.

out. } } //clasa corespunzatoare listei simplu inlantuite class ListaInlantuita{ Element primul. } } static void initializeazaUnu(int [][] a){ int numarLinii = a. } } //clasa corespunzatoare unui element al listei class Element{ int valoare. urmator=null.println(). lista. lista. for (int linie = 0. coloana++) a [linie][coloana] = 1. System.out.adaugaNod(new Element(0)).System. linie < numarLinii. linie++) for (int coloana = 0.length. //date de tip int Element urmator.adaugaNod(new Element(7)).length. int numarColoane = a[0]. lista.print (a[i] [j] + " "). //legatura catre urmatorul nod Element(int valoareNod){ valoare=valoareNod. coloana < numarColoane. .afiseazaLista(). ultimul. } } Captura: 24) //clasa care contine metoda main() public class Lista{ public static void main(String args[]){ ListaInlantuita lista=new ListaInlantuita().adaugaNod(new Element(3)). lista.

urmator. if(ultimul!=null) ultimul.urmator=nodNou.adaugaNod(new String ("sapte")).valoare + " "). listaIntregiStringuri. if(primul==null)//acesta este primul element primul=nodNou. ListaInlantuita (){ primul=ultimul=null.adaugaNod(new Integer(3)). numarNoduri=0.adaugaNod(new Integer(0)). listaIntregiStringuri. } //adaugarea se realizeaza la sfarsitul listei void adaugaNod(Element nodNou){ nodNou. while(temporar!=null){ System. } //afisarea continutului listei void afiseazaLista(){ Element temporar=primul. } System.adaugaNod(new Integer(7)).println(temporar.int numarNoduri.out. temporar=temporar.urmator=null. listaIntregiStringuri. listaIntregiStringuri. .adaugaNod(new String("zero")). numarNoduri++. listaIntregiStringuri.adaugaNod(new String("trei")).out. ultimul=nodNou.println(). listaIntregiStringuri. } } Captura: 25) public class ListaGenerica{ public static void main(String args[]){ ListaInlantuitaGenerica listaIntregiStringuri=new ListaInlantuitaGenerica().

valoare + " "). numarNoduri++. ultimul=nodNou. numarNoduri=0. while(temporar!=null){ System. } } //clasa corespunzatoare listei generice simplu inlantuite class ListaInlantuitaGenerica{ ElementGeneric primul.urmator. } . //date de tip generic(Object se poate unifica cu un tip arbitrar de date in timpul executiei programului) ElementGeneric urmator.urmator=null.out. } System.listaIntregiStringuri.println(). int numarNoduri.println(temporar. urmator=null. if(ultimul!=null) ultimul. } //afisarea continutului listei void afiseazaLista(){ ElementGeneric temporar=primul. ultimul. //constructorul clasei ListaInlantuitaGenerica(){ primul=ultimul=null. } ///adaugarea unui nod la lista void adaugaNod(Object dateNoi){ ElementGeneric nodNou=new ElementGeneric(dateNoi). if(primul==null)//acesta este primul element primul=nodNou. nodNou.afiseazaLista().out. temporar=temporar. //legatura catre urmatorul nod ElementGeneric(Object valoareNod){ valoare=valoareNod. } } //clasa corespunzatoare unui element al listei class ElementGeneric{ Object valoare.urmator=nodNou.

*. else if(compara>0)//ne ducem la stanga . txt care vor fi inserate într-un arbore de cautare. int contorCuvant.cuvant. contorCuvant=1. Se va realiza parcurgerea "acestuia în preordine. } void insereazaNod(NodArboreBinar nod. NodArboreBinar stanga.contorCuvant++. //constructorul clasei OperatiiArboreBinar(){ radacina=null. //definim clasa NodArboreBinar folosita pentru reprezentarea unui arbore binar de cautare class NodArboreBinar{ String cuvant. postordine. respectiv.compareTo(cuvantNou).} Captura: 26) Se citesc cuvinte din fisierul numere. if(compara==0)//cuvantul exista deja nod.util. String cuvantNou){ int compara=nod. //construcorul clasei NodArboreBinar(String cuvantNou){ cuvant=cuvantNou. dreapta.io. inordine si.*. import java. import java. } } //definim clasa OperatiiArboreBinar care cuprinde descrierea operatiilor principale din arbore class OperatiiArboreBinar{ NodArboreBinar radacina. stanga=dreapta=null.

dreapta!=null) insereazaNod(nod.stanga!=null) return gaseste(nod.dreapta=new NodArboreBinar(cuvantNou).dreapta. else return 0. else return null.stanga.cuvantNou). if(nod!=null) return nod.cuvantCheie). else nod.stanga=new NodArboreBinar(cuvantNou).contorCuvant.cuvant. else if(compara>0) if(nod. String cuvantCheie){ int compara = nod.cuvantCheie).stanga!=null) insereazaNod(nod.dreapta!=null) return gaseste(nod. cuvantNou). else insereazaNod(radacina. } //aceasta metoda are menirea de a separa cazul crearii radacinii de cazul inserarii unui nod ordinar void insereazaCuvant(String cuvantNou){ if(radacina==null) radacina=new NodArboreBinar(cuvantNou). } . } //metoda cauta nodul care contine cuvantul specificat //parametrul nod indica arborele in care se realizeaza cautare NodArboreBinar gaseste(NodArboreBinar nod.else if(nod. else return null.cuvantCheie).stanga. cuvantNou).//nu a fost gasit cuvantCheie else ///compara <0 if(nod. else nod. if(compara==0)//am gasit cuvantCheie return nod.compareTo(cuvantCheie). } int cuvantContor(String cuvantCheie){ if(radacina!=null){ NodArboreBinar nod=gaseste(radacina. //comapara<0 if(nod.dreapta.

cuvant +" . " + nod.stanga. listaInordine).dreapta!=null) preordine(nod. listaPreordine).append(pereche). listaInordine.stanga!=null) preordine(nod. listaInordine). if(nod!=null){ String pereche = "(" +nod. StringBuffer listaPostordine){ if(nod!=null){ String pereche = "(" + nod. } } }//sfarsitul clasei OperatiiArboreBinar public class cuvantArboreBinar{ public static void main(String args[]){ .append(pereche). listaPostordine.listaPreordine). } } void inordine(NodArboreBinar nod. listaPreordine.contorCuvant + ")\n". listaPostordine). else preordine(nod. intre reprezentarea arborelui //si lista in preordine completa exista o corespondenta biunivoca.contorCuvant +")\n".0)")).return 0.dreapta. StringBuffer listaInordine){ if(nod!=null){ String pereche="(" + nod.Mai precis.stanga.cuvant +". " + nod.append("(null.stanga. postordine(nod. if(nod. else preordine(nod. listaPostordine).append(pereche).contorCuvant + ")\n". listaPreordine. } } void postordine(NodArboreBinar nod.cuvant + ".append("(null. " + nod. postordine(nod.stanga.dreapta. if(nod. inordine(nod. StringBuffer listaPreordine){ //in lista preordine am preferat sa listam si nodurile vide in ideea refacerii //ulterioare a structurii de arbore binar.dreapta.dreapta.0)")). inordine(nod.listaPreordine.//arbore vid } void preordine(NodArboreBinar nod.

System. StringBuffer listaPostordine=new StringBuffer (" "). arboreBinar.OperatiiArboreBinar arboreBinar=new OperatiiArboreBinar(). System. } } Captura: .insereazaCuvant(new String (sir)). listaPreordine). while (st.println("Lista in postordine este " + listaPostordine). arboreBinar.println("Lista in preordine (completa) este " + listaPreordine).out.out. listaInordine). } catch(Exception e){ System.cuvantContor("AVAJ")). try{ intrare=new BufferedReader(new FileReader("H:/java/4.5.nextToken().out. while ((oLinie=intrare.preordine(arboreBinar. StringBuffer listaPreordine=new StringBuffer(" ").postordine(arboreBinar.cuvantContor("JAVA")). System. listaPostordine). } } intrare.radacina.\"'\t\n\r").inordine(arboreBinar. BufferedReader intrare.println("Eroare : " +e).println("Numar cuvinte 'JAVA' =" + arboreBinar. " .out.out.println("Lista in ordine (ce corespunde cu sortarea " + " crescatoare) este " + listaInordine).println("Numar cuvinte 'AVAJ =" + arboreBinar.hasMoreTokens()){ String sir= st. } //probam pentru cateva cuvinte System.close(). arboreBinar.readLine())!=null){ StringTokenizer st= new StringTokenizer(oLinie..txt")). arboreBinar.3/numere1.radacina.radacina.out. StringBuffer listaInordine=new StringBuffer(""). String oLinie. System.

float media) { this.prenume = new String(prenume). listaStudenti .Vector. i++) { Student curent = (Student) listaStudenti. "Munteanu".addElement(new Student(52322."Loredana". 9.49f)). Student(int numarMatricol.out. prenume."Trufanda".numarMatricol = numarMatricol.println(curent). this. 9. i < listaStudenti. this. String prenume.print ("Studenta " + i + ": "). 8. } public String toString () { return("NumarMatricol:" + numarMatricol + " Nume: " + nume +" Prenume: " + prenume + " Media: " + media).99f)).size(). for (int i = 0."Florin".media = media.27) Se creeaza un vector cu informatii despre studenti.out. String nume.elementAt(i).nume = new String(nume). this. listaStudenti. "Raicu". class Student { int numarMatricol.addElement(new Student(52426. listaStudenti.addElement (new Student (52321. String nume. float media.util. } } // sfârsitul clasei Student public class VectorStudenti { public static void main(String[] args) { Vector listaStudenti = new Vector()."Viorel". import java. } } } // sfârsitul clasei VectorStudenti Captura: .99f)). System. System.

import java. boolean reusita.println("Nu am creat directorul " + "C: \\dirProba!") .out. Cu apelul metodei getFilePointer () vom verifica faptul ca o variabila' de tip int se memoreaza într-un fisier binar pe patru octeti. 20000 si 30000. public class Fisiere { public static void main(String[] args) { int i. în care sunt trei întregi: 10000. if (reusita) System. pozitionam pointerul la fisier pe prima pozitie si citim pe rând primii patru octeti (utilizând o variabila de tip byte) si apoi ultimii opt octeti folosind o variabila de tip double.28) Urmatorul program pune în evidenta crearea (în caz ca nu exista deja) a directorului C : \dirProba (sub sistemul Windows): import java.out.println("Directorul C:\\dirProba exista deja!"). Apoi pozitionam pointerul la fisier dupa patru octeti (prin apelarea metodei seek()) si astfel vom înlocui 20000 cu 40000.isDirectory ()) System. Apoi.println("Am reusit sa cream directorul " +"C:\\dirProba").bin.*. else System.*. reusita = dirNou. File dirNou = new File ("C :\\dirProba" ).io. } } Captura: 29) Mai întâi se va crea fisierul binar (prin acces de scriere) fisier .out. public class FisiereAccesAleator { public static void main(String[] args) { try { .mkdir(). if (dirNou.io.

b = fisierDoi. // vom inlocui in fisier valoarea 200Q0 cu 40000 fisierUnu.readByte (). // afisam octetul cel mai semnificativ System. // resetam pointerul catre fisierDoi la zero fisierDoi.close (). // citim urmatorii opt octeti si-1 interpretam ca double double d = fisierDoi.readDouble().bin".getFilePointer()) . "rw"). System. "r").writeInt(40000).writeInt(30000).writeInt(20000). fisierUnu. fisierUnu.println("i2 = " + i + " pointer = " +fisierDoi.seek(0) .getFilePointer()) .out.out.readInt() . // citim al doilea intreg i = fisierDoi.bin va contine valorile intregi 10000.println("Eroare de scriere in fisierUnu" + e. // citim patru octeti care formeaza un int byte b = fisierDoi. fisierDoi. b = fisierDoi.out. // citim primul intreg int i = fisierDoi. // 40000 si 30000 RandomAccessFile fisierDoi = new RandomAccessFile("fisier.writeInt(10000). fisierUnu.out.println("b4 = " + b).bin".close () . } } .println("i1 = " + i + " pointer = " + fisierDoi.RandomAccessFile fisierUnu = new RandomAccessFile("fisier.out. System. System.toString()) . fisierUnu.out.out.} try { // fisier.seek(4) . System.toString()) .println("bl = " + b).println("b2 = " + b).println("Eroare de citire din fisier " +es.println("d = " + d).out. } catch (IOException es) { System.println("b3 = " + b). System. // afisam octetul cel mai nesemnificativ System. fisierUnu.readInt().out.readByte().readByte().readByte(). } catch (IOException e) { System. b = fisierDoi.

} } } //Dupa cum se observa. String s. urmat de caracterul doua puncte si spatiu. .out. import java. public class LiniiNumerotate { public static void main(String[] args) { try{ FileReader fr = new FileReader("LiniiNumerotate.println(lnr. în care fiecare linie este precedata de numarul ei. while ( (s = lnr.patiu.println( "A aparut o exceptie de intrare/iesire") . LineNumberReader lnr = new LineNumberReader(fr).io. } catch (IOException e) { System. readLine ()) != null) { System.out.*. punând la începutul fiecarei linii numarul ei.close().java").getLineNumber() + ": " + s). fr. executia acestui program va afisa codul sursa al programului de mai sus. } lnr.} Captura: 30) Urmatorul program pune în evidenta utilizarea claselor FileReader si LineNumberReader pentru afisarea unui fisier text.close().

raza" + raza.y)<= raza *raza. } public boolean punctInterior(double x.x = x. class CercDoi implements Serializable { protected double x. this.10).x) +(this.*.y .x .*. } } public class TestCercDoiSerializare { public static void main(String[] args) { CercDoi obiect = new CercDoi(0.x . raza. this. } public String toString() { return "Centrul (" + x +"."+y+"). public CercDoi(double x.Captura: 31) Urmatorul program Java utilizeaza interfata Serializable: import java.y .y = y.x) * (this. double y) { return (this. y.y)*(this. double raza) { this.raza = raza.io.0. double y. try { .util. import java. private Vector altCerc = new Vector().

writeObject(obiect).0).out.dat") ) .close (). System.println (obiectCitit).out. } } } //Cu toate ca variabilele x. } catch (IOException e) { System. oos. | Centrul (0. ois.out.out. fir1. ba chiar si cu nume.println("Eroare la serializare"). deci toate elementele sale vor fi transmise cu succes.println("JVM a creat contextul celor doua fire de executie!").println ("Eroare la deserializare" + e.println("JVM va crea contextul celor doua fire de executie!").start(). y. 0. FirExecutie fir2 = new FirExecutie("FIR2"). La executia programului de mai sus se va afisa. Metoda readObject () returneaza un Object si deci trebuie realizat downcasting prin specificarea numelui clasei obiectului citit. } catch (ClassNotFoundException e) { System.0. CercDoi obiectCitit = (CercDoi) ois. raza 10.start().0 Captura: 32) Putem crea mai multe fire de executie. Clasa Vector este serializabila.out. System.ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("cerc.getMessage ()). oos. System.println("N-am gasit clasa obiectului in flux" + e. fir2.getMessage () ) .dat") ) . public class AlDoileaFir { public static void main(String[] args) { FirExecutie fir1 = new FirExecutie("FIR1"). acestea sunt accesibile fluxurilor obiect. raza si altCerc nu sunt publice.readObject() . } } . } try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cerc.close () . } catch (IOException e) { System.out.

").out. System.println(numeFir + " este la pasul " + i).out. i <= numarPasi. Thread fir = new Thread(tinta).println("Run se executa de " + numarPasi +"ori.println(numeFir + " si-a terminat treaba"). } public void run() { int numarPasi = 5.println ("Revenim in main()"). System. out . public FirExecutie(String nume){ numeFir = nume.println("Startam firul de executie"). } } .println("Crearea obiectului runnable"). fir. System. try { sleep(500). i++) { System. } } System.out.out.err.out.start (). Tinta tinta = new Tinta ().println("Eroare in somn"). }} Captura: 33) Un exemplu simplu de utilizare a interfetei Runnable: public class PrimulRunnable { public static void main(String[] args) { System. } catch (InterruptedException e) { System.println("Cream firul de executie"). System.class FirExecutie extends Thread{ private String numeFir. for (int i = 1.out.

*. import java.*.*.i++) afisare ("Pasul " + i). out .io. add(afiseaza).awt. public class InfoURL extends Applet implements ActionListener{ //datele membre URL url.applet. } } Captura: 34) import java. for (int i = 1. 1 <= numarPasi. afiseaza.net.class Afisare { public void afisare(String mesaj){ System. afisare("Run se executa de " + numarPasi + " ori. import java.awt. } } /** clasa corespunzatoare firelor de executie */ class Tinta extends Afisare implements Runnable { public void run() { int numarPasi = 5.addActionListener(this). import java.").println (mesaj) .event. Button afiseaza. add(numeCamp). TextField numeCamp. //metoda de initializare public void init(){ //crearea unui buton afiseaza=new Button("Dati adresa url: "). import java. //crearea unui camp de text numeCamp=new TextField(60).*. afisare("Run si-a terminat treaba"). } //implementarea metodei din interfata ActionListener public void actionPerformed(ActionEvent event){ //preluam url introdus in campul text .*. String sirURL.

//extragem referinta(ancora) String numeReferinta=url.getProtocol(). try{ //instantiem un obiect de tip URL url=new URL(sirURL).getMessage()). System.sirURL=numeCamp. System. import java.io.afisare ().println("Numele protocolului este : "+ numeProtocol). System. System.*.println("Numele referintei este : "+numeReferinta).out. //obtinem numele masinii gazda String numeHost=url. continut.net.println("Numele host-ului este: " +numeHost). //obtinem numele protocolului String numeProtocol=url.out. fluxIntrare.*. //obtinem numele fisierului String numeFisier=url.println("Numarul portului este: " +numarPort).println("Eroare : " +e.println("Numele fisierului este: " +numeFisier).getHost(). /** metoda principala */ public static void main(String[] args) { ContinutTextURL continut = new ContinutTextURL().err. .out. Aplicatia permite doar afisarea documentelor de tip text. import java.getRef(). //obtinem numele portului int numarPort=url.out. public class ContinutTextURL { /** declararea datelor membre */ private BufferedReader tastatura.out.getFile(). System.getPort(). } } } 35) Programul Java de mai jos citeste de la tastatura o adresa URL si afiseaza continutul fisierului pe ecran. } catch(MalformedURLException e){ //tratarea exceptiei System. } /** metoda pentru afisarea continutului de la adrtsa data de URL */ private void afisare() { /** declararea variabilelor locale */ String sirURL = "".getText().

System. /** crearea unei conexiuni */ URLConnection conexiune = adresaURL. } /**intoarcerea rezultatului */ return raspuns. /** obtinerea unui flux pentru citirea continutului-resursei */ fluxIntrare = new BufferedReader(new InputStreamReader(conexiune.println("Eroare la stabilirea conexiunii: " + e).flush(). } } /** metoda pentru citirea unei linii de la tastatura */ private String prompt(String mesaj) { String raspuns = "". try { /** obtinerea adresei URL de la tastatura */ sirURL = prompt("Dati o adresa URL (ex. 1).ro/):"). } }/** tratarea exceptiilor */ catch (MalformedURLException e) { System.infoiasi. } catch (IOException e) { System.openConnection().: " +"http://www. o afisam la consola* */ while ((linie = fluxIntrare.println("Eroare la citirea de la tastatura:"+ e) .exit (2).println(linie) . /** citirea unei linii de la tastatura */ raspuns = tastatura. System. /** obtinerea unui flux de la tastatura */ tastatura = new BufferedReader(new InputStreamReader(System. /** cat timp putem citi cate o linie.in).err. System. /** golirea fluxului de iesire */ System.exit(1).print(mesaj) .readLine() .out.out.String linie = "". } } .println("URL gresit:"+ sirURL + "\n" + e).exit(2).readLine()) != null) { System.out. /** obtinerea unei instante a clasei URL */ URL adresaURL = new URL(sirURL) .err. try { /** afisarea unui mesaj */ System. } catch (IOException e) { System.getInputStream())).err.

parseDouble(a[1]). import java. public class Distanta { public static void main(String a[]) throws Exception { NumberFormat f=new DecimalFormat("##0.format(Math.*.io.text. public class Adunare { public static void main(String arg[]) throws Exception { BufferedReader in=new BufferedReader(new InputStreamReader(System. System. import java.x2=2.*.parseDouble(a[3]). double y2=Double. double x1=Double.y1=8.io.printf("Distanta este:"+"+f.parseDouble(a[0]).util.*.in)). . double x2=Double.*.out.y2=6.00"). double y1=Double. Date de iesire:"Distanta este 2. } } Date de intrare: x1=4.Captura: 36) Sa se determine distanta euclidina dintre 2 puncte ale caror coordonate se dau in linia de comanda sub forma a 4 numere: importjava.parseDouble(a[2]).sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2y1)))).83" Captura: 37) Sa se scrie o aplicatie care calculeaza suma a doua numere primite ca argumente in linia de comanda: import java.

}} . x=(-b)/a.nr2=5 Date de iesire:"nr1+nr2=12. lat= Double.parseDouble(arg[1]).0". public class Ecuatie1 { public static void main(String arg[]) throws Exception { BufferdReader in=new BufferedReader(new InputStreamReader(System.io.out. System. import java.println("nr1+nr2="+suma).in)).out. import java.*. a=Double.b.println("Aria dreptunghiului este:"+arie).lat. nr1=Double.io.x. b=6 Date de iesire:" Rezultatul ecuatiei este: -1. public class Dreptunghi { public static void main(String arg[]) throws Exception { BufferdReader in=new BufferedReader(new InputStreamReader(System.nr2.parseDouble(arg[0]).*.suma.e(arg[0]). b=Double.5" Captura: 39) Sa se scrie o aplicatiecare calculeaza aria unui dreptunghi cu lungimea si latimea primite ca argumente in linia de comanda: import java.println("Rezultatul ecuatiei este:"+x). System. arie=lung*lat.in)).parseDouble(arg[1]). suma=nr1+nr2. Captura: 38)Sa se scrie o aplicatie care rezolva ecuatia de gradul I cu coeficientii primiti ca argumente in linia de comanda: importjava.util.*.parseDoub.arie.util. nr2=Double. } } Date de intrare:nr1=7.double nr1.parseDouble(arg[0]).out. double a.parseDoub. double lung. System.e(arg[1]). } } Date de intrare: a=4.*. lung= Double.

} } } Captura: .out. for(int j=2.println(i).*.0" Captura: 40) Sa se scrie o aplicatie care sa afiseze numerele prime de la 1 la 100: importjava. import java. isPrime=true.j++) if(i%j==0) isPrime=false.j<I.Date de intrare:lung=7.i<100.i++) { Boolean isPrime.io. lat=9 Date de iesire:" Aria dreptunghiului este:63.*. if(isPrime==true) System.util. public class Prime { public static void main(String arg[]) throws Exception { for(int i=1.

Sign up to vote on this title
UsefulNot useful