probleme rezolvate java

Upload: hahn-raul

Post on 07-Apr-2018

1.037 views

Category:

Documents


28 download

TRANSCRIPT

  • 8/3/2019 Probleme Rezolvate Java

    1/40

    1. Urmtorul program pune in eviden creearea unor instane 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 Exemplupublic 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 implicitExemplu 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:

  • 8/3/2019 Probleme Rezolvate Java

    2/40

    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

  • 8/3/2019 Probleme Rezolvate Java

    3/40

    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 lacapetele" 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:065535short:0-1

    byte:0-1

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    4/40

    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 DoWhileDate de intrare: numarCitit=2.3, numarCitit=45.566

    Date de iesire: Suma numerelor citite este47.866

  • 8/3/2019 Probleme Rezolvate Java

    5/40

    Captura:

    7) Programul de mai jos, la unele executii, programul de mai sus va afisa:"S-a executat break eticheta. ." iar la altele:"Nu s-a executat break eticheta"

    public class BreakIf{

    public static void main(String args[]){boolean b=false;eticheta:if ((int)(Math.random() * 2)==0){

    b=true;

    break eticheta;

    }

    if(b) System.out.println("S-a executat break eticheta.");

    else

    System.out.println("Nu s-a executatreak eticheta.");

    }}

    Captura:

    8) Programul va descrie o metoda care poate arunca exceptii utilizndinstructiunea throw:

    import java.io.*;

    public class TestExceptii{

    public static void main(String args[]){

    for(int i=0;i

  • 8/3/2019 Probleme Rezolvate Java

    6/40

    }

    private static void metoda1(int i) throws Exception{

    System.out.println("Incepe metoda1:");

    if(i!=0) throw new Exception("din metoda1");

    System.out.println("Sfarsit metoda1.");

    }

    }//sfarsitul definitiei clasei TestExceptiiDate iesire: "Test caz0Incepe metoda1:

    Sfarsit metoda1.Sfarsit caz0

    Executam finally!

    Test caz1Incepe 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();

    synchronized(is){synchronized(is){

    System.out.println("Acum obiectul is este inchis de "+" doua ori!");

    }

    System.out.println("Acum obiectul is este inchis o data!");

    }

    System.out.println("Acum obiectul is nu mai este inchis!");

    }

    }

    DATE IESIRE : "Acum obiectul is este inchis de doua ori!

    Acum obiectul is este inchis o data!

    Acum obiectul is nu mai este inchis! "

  • 8/3/2019 Probleme Rezolvate Java

    7/40

    Captura:

    10) Program Java care compara aruncarea propriilor exceptii fata de exceptiilesistem (RuntimeException):class ExceptiaNoastra extends Exception{

    ExceptiaNoastra(){}

    ExceptiaNoastra(String s){super(s);}

    }public class Exceptie{

    static void f()throws ExceptiaNoastra{

    throw new ExceptiaNoastra();

    }

    public static void main(String[] args){try{

    f();

    }

    catch(RuntimeException re){System.out.println("S-a aruncat exceptia:"+re);

    }

    catch(ExceptiaNoastra en){System.out.println("S-a aruncat exceptia:"+en);

    }

    }}

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    8/40

    11)class Exemplu{

    public static void main(String args[]){

    int x=(int)(Math.random()*5);

    int y=(int)(Math.random()*10);

    int[]z=new int[5];try{

    System.out.println("y/x="+(y/x));System.out.println("y="+y+"z[y]="+z[y]);

    }

    catch(ArithmeticException e){System.out.println("Problema aritmetica:"+e);

    }

    catch(ArrayIndexOutOfBoundsException e){

    System.out.println("Depasire de domeniu index vector"+e);}

    }}

    Captura:

    12)class ExceptiaNoastra extends Exception{

    ExceptiaNoastra(){}

    ExceptiaNoastra(String s){super(s);}}

    public class ExceptieFinally{static void f() throws ExceptiaNoastra{

    throw new NullPointerException();

    }public static void main(String[] args){

    try{

    f();}

    catch(ExceptiaNoastra re){

    System.out.println("S-a aruncat exceptia:"+re);}finally{

    System.out.println("Exceptie neprinsa");

    }}

    }//sfarsitul definitiei clasei ExceptieFinally

  • 8/3/2019 Probleme Rezolvate Java

    9/40

    Captura:

    13) Urmatorul program pune in evidenta sase categorii de variabile care pot aparea.class CitiriIntregi {

    public static void main(String args[]){

    int numar =0;BufferedReader in;

    String linie;

    try{in=new BufferedReader(new InputStreamReader(System.in),1);

    while(true) {

    System.out.println("Dati numarul "+Radical.numarDeNumere);

    linie=in.readLine();

    try{

    numar=Integer.parseInt(linie);}

    catch(NumberFormatException f){ System.out.println("Nu

    ati tastat un numar intreg");}Radical obiect =new Radical(numar);

    System.out.println("Radical din "+numar+" este

    "+obiect.radacinaPatrata());

    System.out.println("Continuam? (tastati s pentru stop)");linie=in.readLine();

    if(linie.equals("s") || linie.equals("S"))

    break;}

    in.close();}catch(IOException e) { System.out.println("Citire

    gresita de la tastatura "+e);}}

    }

    class Radical{static int numarDeNumere=1;

    int nr;Radical (int nr){

    this.nr=nr;numarDeNumere++;

    }

    double radacinaPatrata(){return Math.sqrt(nr);

    }}//sfarsitul definitiei clasei Radical

  • 8/3/2019 Probleme Rezolvate Java

    10/40

    Date intrare: 4 si 16. Date iesire: 2, respectiv 4.

    Captura:

    14)// definirea unei clase abstracte

    abstract class C1 {

    // declararea datelor membreint x = 1,y = 2;

    // declararea unei metode

    void f (int x) {this.x += x;

    g(x) ;

    }

    //declararea unei metode abstracteabstract void g(int y);

    }

    // definirea unei interfeteinterface I1 { public void h ();

    }

    /* definirea unei metode care deriveaza clasa C1 si implementeaza interfata I1 */

    class C2 extends C1 implements I1 {

    int z = 10;// implementarea metodei abstracte din clasa C1

    void g(int y) {

    this.y += y;

    }// implementarea metodei mostenita din interfata I1

    public void h() {

    System.out.println("x = " + x + ", y = " + y + ", z = " + z);}

    }//. definirea clasei care va utiliza un obiect de tip C2public class Testare {

    public static void main(String[] args) {

    C2 obiect = new C2();

    obiect.f (4) ;obiect. g (5) ;

    obiect. h () ; }}

  • 8/3/2019 Probleme Rezolvate Java

    11/40

    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 void setContent(String s){

    content=s;}

    public String getContent(){

    return content;}

    //supradefinirea metodei clone()

    public Object clone(){try{

    return super.clone();

    }catch(CloneNotSupportedException e){

    System.err.println("Eroare la clonare!");return this;

    }

    }}

    public class Object3{

    public static void main(String args[] ){//crearea unui obiect

    ObiectSimplu ob1=new ObiectSimplu();

    //clonarea unui obiectObiectSimplu ob2=(ObiectSimplu) ob1.clone();

    //verificarea celor doua obiecte

    System.out.println(ob1.equals(ob2));

    System.out.println(ob1.getContent()==ob2.getContent());//modificarea originalului

    ob1.setContent("Test");

    //verificarea continutului celor doua obiecte

    System.out.println(ob1.getContent()==ob2.getContent());}

    }

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    12/40

    16)//declararea interfetei I1

    interface I1{

    //declararea unei date membre

    int x=0;

    //declararea unei metode(care este abstracta)public int f();

    }//declararea intefetei I2

    //aceasta va mosteni datele si metode4le membre din I1

    interface I2 extends I1{int y=1;

    public int g();

    }

    //declararea clasei C1class C1{

    int z=2;public int h(){return z;};}

    /*declararea clasei C2 care extinde clasa C1 si implementeaza interfata I2*/

    class C2 extends C1 implements I2{int t=3;

    //redefinirea metodelor din interfata I2

    public int f(){return x;}public int g(){return y;}

    }

    public class SuperInterfete{

    public static void main(String args[]){//instantierea unui obiect din clasa C2

    C2 obiect=new C2();

    System.out.println("x="+obiect.f()+",y="+obiect.g()+",z="+obiect.h()+",t="+obiect.t);

    }

    }

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    13/40

    17) Declaram un atribut static numar Instante, care va fi incrementat nconstructor. La fiecare instantiere a clasei Increment, se va apela constructorulIncrement numarlnstante.public class NumarareInstante{

    public static void main(String args[]){

    System.out.println("S-au creat"+Increment.numarInstante+"instante aleclasei Increment");

    Increment a=new Increment();System.out.println("S-au creat "+Increment.numarInstante+"instante ale

    clasei Increment");

    }}

    class Increment{

    static int numarInstante=0;

    Increment(){numarInstante++;

    };}

    Captura:

    18) Programul de mai jos pune n evidenta realocarea memoriei pentru un obiectfolosind operatorul new si metoda newlnstance () din clasa Class.class C1{

    int x=10;

    C1(){System.out.println("Constructor fara argumente.");}

    C1(int x){

    this.x=x;System.out.println("Constructor cu un argument.");

    }

    }public class TestDealocare{

    public static void main(String args[]){

    C1 obiectUnu=new C1(8);System.out.println("adresa lui obiectUnu="+obiectUnu.hashCode());obiectUnu=new C1(6);

    System.out.println("adresa lui obiectUnu="+obiectUnu.hashCode());

    Class oClasa=null;try{

    oClasa=Class.forName("C1");

    }

  • 8/3/2019 Probleme Rezolvate Java

    14/40

    catch(ClassNotFoundException e){System.out.println("Exceptie:n-am gasit clasa C1."+e);

    }

    try{

    obiectUnu=(C1) oClasa.newInstance();

    }catch(InstantiationException e){

    System.out.println("Exceptie:nu putem instantia clasa C1."+e);}

    catch(IllegalAccessException e){

    System.out.println("Exceptie:acces ilegal la clasa C1."+e);}

    System.out.println("adresa lui obiectUnu="+obiectUnu.hashCode());

    }

    }

    Captura:

    19) Programul de mai jos pune n evidenta o mpartire a unei clase n doua clasemai mici echivalente:public class C1{

    public static void main (String args[]){A obA=new A(1);

    B obB=new B(2,obA);obA=new A(1,obB);

    try{

    obB.get().afiseaza();

    obA.get().afiseaza();}

    catch(NullPointerException e){

    System.out.println("Eroare: " + e.getMessage());}

    }}

    class A{

    private int x;

    private B obiectDinB;A(int x){

    this.x=x;

  • 8/3/2019 Probleme Rezolvate Java

    15/40

    this.obiectDinB=null;}

    A(int x,B obiectDinB){

    this.x=x;

    this.obiectDinB=obiectDinB;

    }B get() throws NullPointerException{

    if(obiectDinB==null)throw new NullPointerException("Obiectul din B este null\n");

    else

    return obiectDinB;}

    void afiseaza(){

    System.out.println("x= " + x);

    }}

    class B{private int y;

    private A obiectDinA;

    B(int y){this.y=y;

    this.obiectDinA=null;

    }B(int y,A obiectDinA){

    this.y=y;

    this.obiectDinA=obiectDinA;

    }A get() throws NullPointerException{

    if(obiectDinA==null)

    throw new NullPointerException("Obiectul din A este null\n");else

    return obiectDinA;

    }void afiseaza(){

    System.out.println("y= " +y);

    }

    }

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    16/40

    20) Urmatorul program Java evidentiaza suprascrierea metodelor unei interfeterelativ la lista de exceptii care pot fi aruncate:class ExceptiaNoastraUnu extends Exception{

    ExceptiaNoastraUnu() {super();}

    }class ExceptiaNoastraDoi extends Exception{

    ExceptiaNoastraDoi() {super();}}

    interface I1{

    int f(int x) throws ExceptiaNoastraUnu,ExceptiaNoastraDoi;}

    interface I2 extends I1{

    int f(int x) throws ExceptiaNoastraDoi;

    }class C1 implements I1{

    public int f(int x) throws ExceptiaNoastraUnu,ExceptiaNoastraDoi{if(x

  • 8/3/2019 Probleme Rezolvate Java

    17/40

    }}

    Captura

    21) Programul Java de mai jos prezinta o aplicatie n care se folosesc interfete.Avem o interfata DispozitiveElectronice, o clasa de baza Locuinta, doua clasederivate (TV si Aspirator) din clasa de baza. Fisierul de aplicatii este ntitulatAplicatieElectronice.java.import java.io.*;

    //fisierul DispozitiveElectronice.java

    interface DispozitiveElectronice{public void setTimpFolosinta(int timp);

    public int getTimpFolosinta();

    public int getPutere();}

    //fisierul Locuinta.javaabstract class Locuinta{

    protected int volum=1;

    private boolean on;

    public void porneste(){

    on=true;

    }

    public void opreste(){

    on=false;}

    public abstract void schimbaVolum(int diferenta);

    }

    //fisierul TV.java

    class TV extends Locuinta implements DispozitiveElectronice{private int timp=0;

    public void schimbaVolum(int diferenta){volum=volum+diferenta;

    }

    public void setTimpFolosinta(int timp){

    this.timp=timp;

    }

  • 8/3/2019 Probleme Rezolvate Java

    18/40

    public int getTimpFolosinta(){

    return timp;

    }

    public int getPutere(){return 100;

    }

    public int getVolum(){

    return volum;}

    }

    //fisierul Aspirator.java

    class Aspirator extends Locuinta implements DispozitiveElectronice{private int timp=0;

    public void schimbaVolum(int diferenta){

    volum=volum+diferenta;}

    public void setTimpFolosinta(int timp){this.timp=timp;

    }

    public int getTimpFolosinta(){return timp;

    }

    public int getPutere(){

    return 500;

    }

    public int getVolum(){

    return volum;

    }}

    //fisierul AplicatieElectronice.java

    public class AplicatieElectronice{private BufferedReader tastatura;

    private int totalPutere;

  • 8/3/2019 Probleme Rezolvate Java

    19/40

    private int timp,volum;

    public static void main (String args[]){

    AplicatieElectronice obiect =new AplicatieElectronice();

    TV tv=new TV();

    obiect.citesteTimp();tv.setTimpFolosinta(obiect.timp);

    tv.schimbaVolum(1);obiect.calculeazaPutereConsumata(tv);

    obiect.afiseaza("tv",tv.getVolum(),tv.getTimpFolosinta(),obiect.totalPutere);tv.setTimpFolosinta(0);

    Aspirator aspirator=new Aspirator();

    obiect.citesteTimp();

    aspirator.setTimpFolosinta(obiect.timp);aspirator.schimbaVolum(2);

    obiect.calculeazaPutereConsumata(aspirator);

    obiect.afiseaza("aspirator",aspirator.getVolum(),aspirator.getTimpFolosinta(),obiect.tot

    alPutere);aspirator.setTimpFolosinta(0);

    }

    private void citesteTimp(){

    try{

    tastatura=new BufferedReader(new

    InputStreamReader(System.in),1);System.out.println("Dati timpul(in minute): ");

    System.out.flush();

    String linie=tastatura.readLine();try{

    timp=Integer.parseInt(linie);

    }catch(NumberFormatException ex){

    System.err.println("Format de intreg gresit: " +ex);

    System.exit(3);

    }}

    catch(IOException e){

    System.out.println("Intrare gresita de la tastatura : " +e);System.exit(2);

    }

    }

    public void afiseaza(String s, int v, int timpUtilizat, int putere){

  • 8/3/2019 Probleme Rezolvate Java

    20/40

    if(s.equals("tv")){System.out.println("TV-ul are volumul " +v);

    System.out.println("si a fost utilizat timp de " + timpUtilizat + "

    minute.");

    System.out.println("Puterea totala a fost " + putere);

    }else

    if(s.equals("aspirator")){System.out.println("Aspiratorul are viteza " +v);

    System.out.println("si a fost utilizat timp de " +

    timpUtilizat + " minute. ");System.out.println("Puterea totala a fost " + putere);

    }

    }

    public void calculeazaPutereConsumata(DispozitiveElectronice dispozitiv){

    int putere=dispozitiv.getTimpFolosinta() * dispozitiv.getPutere();totalPutere=totalPutere + putere;}

    }

    Date de intrare: 20 si 30 minute. Date de iesire:"Puterea totala a fost de 2000 respectiv

    17000"Captura:

    22) Codul Java de mai jos ilustreaza transmiterea (si initializarea) tablourilorbidimensionale ca parametri:public class MatriceParametri {

    public static void main(String[] args) {int [][] v1 = new int [2] [3];

    initializeazaUnu (v1);afiseazaMatrice(v1);

    int [][] v2 = { {1, 3, -4}, {4, -6, 3} };afiseazaMatrice(v2);

    }

    static void afiseazaMatrice(int [][] a) {for (int i = 0; i < a.length; i++) {

    for (int j = 0; j < a [0].length; j++)

  • 8/3/2019 Probleme Rezolvate Java

    21/40

    System.out.print (a[i] [j] + " ");System.out.println();

    }

    }

    static void initializeazaUnu(int [][] a){

    int numarLinii = a.length;int numarColoane = a[0].length;

    for (int linie = 0; linie < numarLinii; linie++)for (int coloana = 0; coloana < numarColoane; coloana++)

    a [linie][coloana] = 1;

    }}

    Captura:

    24)//clasa care contine metoda main()

    public class Lista{public static void main(String args[]){

    ListaInlantuita lista=new ListaInlantuita();

    lista.adaugaNod(new Element(7));

    lista.adaugaNod(new Element(3));lista.adaugaNod(new Element(0));

    lista.afiseazaLista();}

    }

    //clasa corespunzatoare unui element al listeiclass Element{

    int valoare;

    //date de tip int

    Element urmator;//legatura catre urmatorul nod

    Element(int valoareNod){

    valoare=valoareNod;urmator=null;

    }

    }

    //clasa corespunzatoare listei simplu inlantuite

    class ListaInlantuita{Element primul, ultimul;

  • 8/3/2019 Probleme Rezolvate Java

    22/40

    int numarNoduri;

    ListaInlantuita (){

    primul=ultimul=null;

    numarNoduri=0;

    }

    //adaugarea se realizeaza la sfarsitul listeivoid adaugaNod(Element nodNou){

    nodNou.urmator=null;

    if(primul==null)//acesta este primul elementprimul=nodNou;

    if(ultimul!=null)

    ultimul.urmator=nodNou;

    ultimul=nodNou;numarNoduri++;

    }

    //afisarea continutului listei

    void afiseazaLista(){

    Element temporar=primul;while(temporar!=null){

    System.out.println(temporar.valoare + " ");

    temporar=temporar.urmator;}

    System.out.println();

    }

    }

    Captura:

    25)public class ListaGenerica{

    public static void main(String args[]){

    ListaInlantuitaGenerica listaIntregiStringuri=newListaInlantuitaGenerica();

    listaIntregiStringuri.adaugaNod(new Integer(7));

    listaIntregiStringuri.adaugaNod(new Integer(3));

    listaIntregiStringuri.adaugaNod(new Integer(0));listaIntregiStringuri.adaugaNod(new String ("sapte"));

    listaIntregiStringuri.adaugaNod(new String("trei"));

    listaIntregiStringuri.adaugaNod(new String("zero"));

  • 8/3/2019 Probleme Rezolvate Java

    23/40

    listaIntregiStringuri.afiseazaLista();}

    }

    //clasa corespunzatoare unui element al listei

    class ElementGeneric{Object valoare;

    //date de tip generic(Object se poate unifica cu un tip arbitrar de date in timpulexecutiei programului)

    ElementGeneric urmator;

    //legatura catre urmatorul nodElementGeneric(Object valoareNod){

    valoare=valoareNod;

    urmator=null;

    }}

    //clasa corespunzatoare listei generice simplu inlantuiteclass ListaInlantuitaGenerica{

    ElementGeneric primul, ultimul;

    int numarNoduri;//constructorul clasei

    ListaInlantuitaGenerica(){

    primul=ultimul=null;numarNoduri=0;

    }

    ///adaugarea unui nod la lista

    void adaugaNod(Object dateNoi){ElementGeneric nodNou=new ElementGeneric(dateNoi);

    nodNou.urmator=null;

    if(primul==null)//acesta este primul elementprimul=nodNou;

    if(ultimul!=null)

    ultimul.urmator=nodNou;ultimul=nodNou;

    numarNoduri++;

    }

    //afisarea continutului listeivoid afiseazaLista(){

    ElementGeneric temporar=primul;

    while(temporar!=null){System.out.println(temporar.valoare + " ");

    temporar=temporar.urmator;

    }System.out.println();

    }

  • 8/3/2019 Probleme Rezolvate Java

    24/40

    }

    Captura:

    26) Se citesc cuvinte din fisierul numere. txt care vor fi inserate ntr-un arbore decautare. Se va realiza parcurgerea "acestuia n preordine, inordine si, respectiv,postordine.import java.io.*;

    import java.util.*;

    //definim clasa NodArboreBinar folosita pentru reprezentarea unui arbore binar de

    cautareclass NodArboreBinar{

    String cuvant;

    int contorCuvant;NodArboreBinar stanga, dreapta;

    //construcorul clasei

    NodArboreBinar(String cuvantNou){cuvant=cuvantNou;

    contorCuvant=1;stanga=dreapta=null;

    }}

    //definim clasa OperatiiArboreBinar care cuprinde descrierea operatiilor principale dinarbore

    class OperatiiArboreBinar{

    NodArboreBinar radacina;//constructorul clasei

    OperatiiArboreBinar(){

    radacina=null;}

    void insereazaNod(NodArboreBinar nod, String cuvantNou){

    int compara=nod.cuvant.compareTo(cuvantNou);

    if(compara==0)//cuvantul exista dejanod.contorCuvant++;

    else

    if(compara>0)//ne ducem la stanga

  • 8/3/2019 Probleme Rezolvate Java

    25/40

    if(nod.stanga!=null)insereazaNod(nod.stanga, cuvantNou);

    else

    nod.stanga=new NodArboreBinar(cuvantNou);

    else //comapara0)

    if(nod.stanga!=null)return gaseste(nod.stanga,cuvantCheie);

    else

    return null;//nu a fost gasit cuvantCheieelse ///compara

  • 8/3/2019 Probleme Rezolvate Java

    26/40

    return 0;//arbore vid}

    void preordine(NodArboreBinar nod, StringBuffer listaPreordine){

    //in lista preordine am preferat sa listam si nodurile vide in ideea refacerii

    //ulterioare a structurii de arbore binar.Mai precis, intre reprezentareaarborelui

    //si lista in preordine completa exista o corespondenta biunivoca.if(nod!=null){

    String pereche = "(" +nod.cuvant + ", " + nod.contorCuvant +

    ")\n";listaPreordine.append(pereche);

    if(nod.stanga!=null)

    preordine(nod.stanga, listaPreordine);

    elsepreordine(nod.stanga,listaPreordine.append("(null,0)"));

    if(nod.dreapta!=null)preordine(nod.dreapta,listaPreordine);else

    preordine(nod.dreapta, listaPreordine.append("(null,0)"));

    }}

    void inordine(NodArboreBinar nod, StringBuffer listaInordine){if(nod!=null){

    String pereche="(" + nod.cuvant +", " + nod.contorCuvant

    +")\n";

    inordine(nod.stanga, listaInordine);listaInordine.append(pereche);

    inordine(nod.dreapta, listaInordine);

    }}

    void postordine(NodArboreBinar nod, StringBuffer listaPostordine){if(nod!=null){

    String pereche = "(" + nod.cuvant +" , " + nod.contorCuvant +

    ")\n";

    postordine(nod.stanga, listaPostordine);postordine(nod.dreapta, listaPostordine);

    listaPostordine.append(pereche);

    }}

    }//sfarsitul clasei OperatiiArboreBinar

    public class cuvantArboreBinar{

    public static void main(String args[]){

  • 8/3/2019 Probleme Rezolvate Java

    27/40

    OperatiiArboreBinar arboreBinar=new OperatiiArboreBinar();BufferedReader intrare;

    try{

    intrare=new BufferedReader(new

    FileReader("H:/java/4.5.3/numere1.txt"));

    String oLinie;while ((oLinie=intrare.readLine())!=null){

    StringTokenizer st= new StringTokenizer(oLinie," ,;\"'\t\n\r");

    while (st.hasMoreTokens()){

    String sir= st.nextToken();arboreBinar.insereazaCuvant(new String (sir));

    }

    }

    intrare.close();}

    catch(Exception e){System.out.println("Eroare : " +e);}

    //probam pentru cateva cuvinte

    System.out.println("Numar cuvinte 'JAVA' =" +arboreBinar.cuvantContor("JAVA"));

    System.out.println("Numar cuvinte 'AVAJ =" +

    arboreBinar.cuvantContor("AVAJ"));StringBuffer listaPreordine=new StringBuffer(" ");

    arboreBinar.preordine(arboreBinar.radacina, listaPreordine);

    System.out.println("Lista in preordine (completa) este " +

    listaPreordine);StringBuffer listaInordine=new StringBuffer("");

    arboreBinar.inordine(arboreBinar.radacina, listaInordine);

    System.out.println("Lista in ordine (ce corespunde cu sortarea " + "crescatoare) este " + listaInordine);

    StringBuffer listaPostordine=new StringBuffer (" ");

    arboreBinar.postordine(arboreBinar.radacina, listaPostordine);System.out.println("Lista in postordine este " + listaPostordine);

    }

    }

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    28/40

    27) Se creeaza un vector cu informatii despre studenti.

    import java.util.Vector;

    class Student {int numarMatricol;

    String nume, prenume;

    float media;

    Student(int numarMatricol, String nume, String prenume, float media) {

    this.numarMatricol = numarMatricol;

    this.nume = new String(nume);this.prenume = new String(prenume);

    this.media = media;}public String toString () {

    return("NumarMatricol:" + numarMatricol + " Nume: " + nume +"

    Prenume: " + prenume + " Media: " + media);}

    } // sfrsitul clasei Student

    public class VectorStudenti {

    public static void main(String[] args) {

    Vector listaStudenti = new Vector();listaStudenti .addElement (new Student (52321,"Trufanda","Viorel",

    9.99f));

    listaStudenti.addElement(new Student(52322, "Raicu","Florin", 8.99f));listaStudenti.addElement(new Student(52426, "Munteanu","Loredana",

    9.49f));

    for (int i = 0; i < listaStudenti.size(); i++) {Student curent = (Student) listaStudenti.elementAt(i);

    System.out.print ("Studenta " + i + ": ");

    System.out.println(curent);

    }}

    } // sfrsitul clasei VectorStudenti

    Captura:

  • 8/3/2019 Probleme Rezolvate Java

    29/40

    28) Urmatorul program pune n evidenta crearea (n caz ca nu exista deja) adirectorului C : \dirProba (sub sistemul Windows):import java.io.*;

    public class Fisiere {

    public static void main(String[] args) {

    int i;

    boolean reusita;File dirNou = new File ("C :\\dirProba" );

    if (dirNou.isDirectory ())System.out.println("Directorul C:\\dirProba exista deja!");

    reusita = dirNou.mkdir();

    if (reusita)System.out.println("Am reusit sa cream directorul " +"C:\\dirProba");

    else

    System.out.println("Nu am creat directorul " + "C: \\dirProba!") ;

    }}

    Captura:

    29) Mai nti se va crea fisierul binar (prin acces de scriere) fisier .bin, n care sunttrei ntregi: 10000, 20000 si 30000. Apoi pozitionam pointerul la fisier dupa patruocteti (prin apelarea metodei seek()) si astfel vom nlocui 20000 cu 40000. Cu apelulmetodei getFilePointer () vom verifica faptul ca o variabila' de tip int se memoreazantr-un fisier binar pe patru octeti. Apoi, pozitionam pointerul la fisier pe prima

    pozitie si citim pe rnd primii patru octeti (utiliznd o variabila de tip byte) si apoiultimii opt octeti folosind o variabila de tip double.

    import java.io.*;

    public class FisiereAccesAleator {public static void main(String[] args) {

    try {

  • 8/3/2019 Probleme Rezolvate Java

    30/40

    RandomAccessFile fisierUnu = newRandomAccessFile("fisier.bin", "rw");

    fisierUnu.writeInt(10000);

    fisierUnu.writeInt(20000);

    fisierUnu.writeInt(30000);

    // vom inlocui in fisier valoarea 200Q0 cu 40000fisierUnu.seek(4) ;

    fisierUnu.writeInt(40000);fisierUnu.close () ;

    }

    catch (IOException e) {System.out.println("Eroare de scriere in fisierUnu" + e.toString()) ;}

    try {

    // fisier.bin va contine valorile intregi 10000,

    // 40000 si 30000RandomAccessFile fisierDoi = new RandomAccessFile("fisier.bin", "r");

    // citim primul intregint i = fisierDoi.readInt();System.out.println("i1 = " + i + " pointer = " +

    fisierDoi.getFilePointer()) ;

    // citim al doilea intregi = fisierDoi.readInt() ;

    System.out.println("i2 = " + i + " pointer = " +fisierDoi.getFilePointer())

    ;// resetam pointerul catre fisierDoi la zero

    fisierDoi.seek(0) ;

    // citim patru octeti care formeaza un int

    byte b = fisierDoi.readByte ();// afisam octetul cel mai semnificativ

    System.out.println("b4 = " + b);

    b = fisierDoi.readByte();System.out.println("b3 = " + b);

    b = fisierDoi.readByte();

    System.out.println("b2 = " + b);b = fisierDoi.readByte();

    // afisam octetul cel mai nesemnificativ

    System.out.println("bl = " + b);

    // citim urmatorii opt octeti si-1 interpretam ca doubledouble d = fisierDoi.readDouble();

    System.out.println("d = " + d);

    fisierDoi.close ();}

    catch (IOException es) {

    System.out.println("Eroare de citire din fisier " +es.toString()) ;}

    }

  • 8/3/2019 Probleme Rezolvate Java

    31/40

    }

    Captura:

    30) Urmatorul program pune n evidenta utilizarea claselor FileReader siLineNumberReader pentru afisarea unui fisier text, n care fiecare linie esteprecedata de numarul ei.import java.io.*;

    public class LiniiNumerotate {

    public static void main(String[] args) {try{

    FileReader fr = new FileReader("LiniiNumerotate.java");

    LineNumberReader lnr = new LineNumberReader(fr);String s;

    while ( (s = lnr. readLine ()) != null) {

    System.out.println(lnr.getLineNumber() + ": " + s);}

    lnr.close(); fr.close();

    }

    catch (IOException e) {

    System.out.println( "A aparut o exceptie de intrare/iesire") ;}

    }}

    //Dupa cum se observa, executia acestui program va afisa codul sursa al programului demai sus, punnd la nceputul fiecarei linii numarul ei, urmat de caracterul doua puncte si

    spatiu.patiu.

  • 8/3/2019 Probleme Rezolvate Java

    32/40

    Captura:

    31) Urmatorul program Java utilizeaza interfata Serializable:import java.io.*;import java.util.*;

    class CercDoi implements Serializable {

    protected double x, y, raza;private Vector altCerc = new Vector();

    public CercDoi(double x, double y, double raza) {

    this.x = x;this.y = y;

    this.raza = raza;

    }public boolean punctInterior(double x, double y) {

    return (this.x - x) * (this.x - x) +(this.y - y)*(this.y - y)

  • 8/3/2019 Probleme Rezolvate Java

    33/40

    ObjectOutputStream oos = new ObjectOutputStream(newFileOutputStream("cerc.dat") ) ;

    oos.writeObject(obiect);

    oos.close ();

    } catch (IOException e) {

    System.out.println("Eroare la serializare"); }try {

    ObjectInputStream ois = new ObjectInputStream(newFileInputStream("cerc.dat") ) ;

    CercDoi obiectCitit = (CercDoi) ois.readObject() ;

    System.out.println (obiectCitit);ois.close () ;

    }

    catch (IOException e) {

    System.out.println ("Eroare la deserializare" + e.getMessage ());}

    catch (ClassNotFoundException e) {System.out.println("N-am gasit clasa obiectului in flux" + e.getMessage () ) ;}

    }

    }

    //Cu toate ca variabilele x, y, raza si altCerc nu sunt publice, acestea sunt accesibile

    fluxurilor obiect. Clasa Vector este serializabila, deci toate elementele sale vor fitransmise cu succes. Metoda readObject () returneaza un Object si deci trebuie realizat

    downcasting prin specificarea numelui clasei obiectului citit. La executia programului de

    mai sus se va afisa; | Centrul (0.0, 0.0), raza 10.0

    Captura:

    32) Putem crea mai multe fire de executie, ba chiar si cu nume.public class AlDoileaFir {

    public static void main(String[] args) {

    FirExecutie fir1 = new FirExecutie("FIR1");FirExecutie fir2 = new FirExecutie("FIR2");

    System.out.println("JVM va crea contextul celor doua fire de executie!");fir1.start();

    fir2.start();

    System.out.println("JVM a creat contextul celor doua fire de executie!");}

    }

  • 8/3/2019 Probleme Rezolvate Java

    34/40

    class FirExecutie extends Thread{

    private String numeFir;

    public FirExecutie(String nume){

    numeFir = nume;

    }public void run() {

    int numarPasi = 5;System.out.println("Run se executa de " + numarPasi +"ori.");

    for (int i = 1; i

  • 8/3/2019 Probleme Rezolvate Java

    35/40

    class Afisare {public void afisare(String mesaj){

    System. out .println (mesaj) ;

    }

    }

    /** clasa corespunzatoare firelor de executie */

    class Tinta extends Afisare implements Runnable {public void run() {

    int numarPasi = 5;

    afisare("Run se executa de " + numarPasi + " ori.");for (int i = 1; 1

  • 8/3/2019 Probleme Rezolvate Java

    36/40

    sirURL=numeCamp.getText();try{

    //instantiem un obiect de tip URL

    url=new URL(sirURL);

    //obtinem numele fisierului

    String numeFisier=url.getFile();System.out.println("Numele fisierului este: " +numeFisier);

    //obtinem numele masinii gazdaString numeHost=url.getHost();

    System.out.println("Numele host-ului este: " +numeHost);

    //obtinem numele portuluiint numarPort=url.getPort();

    System.out.println("Numarul portului este: " +numarPort);

    //obtinem numele protocolului

    String numeProtocol=url.getProtocol();System.out.println("Numele protocolului este : "+ numeProtocol);

    //extragem referinta(ancora)String numeReferinta=url.getRef();System.out.println("Numele referintei este : "+numeReferinta);

    }

    catch(MalformedURLException e){//tratarea exceptiei

    System.err.println("Eroare : " +e.getMessage());

    }}

    }

    35)Programul Java de mai jos citeste de la tastatura o adresa URL si afiseazacontinutul fisierului pe ecran. Aplicatia permite doar afisarea documentelor de tip

    text.import java.io.*;import java.net.*;

    public class ContinutTextURL {/** declararea datelor membre */

    private BufferedReader tastatura, fluxIntrare;

    /** metoda principala */public static void main(String[] args) {

    ContinutTextURL continut = new ContinutTextURL();

    continut.afisare ();}

    /** metoda pentru afisarea continutului de la adrtsa data de URL */

    private void afisare() {/** declararea variabilelor locale */

    String sirURL = "";

  • 8/3/2019 Probleme Rezolvate Java

    37/40

    String linie = "";/** obtinerea unui flux de la tastatura */

    tastatura = new BufferedReader(new InputStreamReader(System.in), 1);

    try {

    /** obtinerea adresei URL de la tastatura */

    sirURL = prompt("Dati o adresa URL (ex.: " +"http://www.infoiasi.ro/):");/** obtinerea unei instante a clasei URL */

    URL adresaURL = new URL(sirURL) ;/** crearea unei conexiuni */

    URLConnection conexiune = adresaURL.openConnection();

    /** obtinerea unui flux pentru citirea continutului-resursei */fluxIntrare = new BufferedReader(new

    InputStreamReader(conexiune.getInputStream()));

    /** cat timp putem citi cate o linie, o afisam la consola* */

    while ((linie = fluxIntrare.readLine()) != null){ System.out.println(linie) ;

    }}/** tratarea exceptiilor */catch (MalformedURLException e) {

    System.err.println("URL gresit:"+ sirURL + "\n" + e);

    System.exit(2);} catch (IOException e) {

    System.err.println("Eroare la stabilirea conexiunii: " + e);

    System.exit(1);}

    }

    /** metoda pentru citirea unei linii de la tastatura */private String prompt(String mesaj) {

    String raspuns = "";

    try {/** afisarea unui mesaj */

    System.out.print(mesaj) ;

    /** golirea fluxului de iesire */System.out.flush();

    /** citirea unei linii de la tastatura */

    raspuns = tastatura.readLine() ;

    }catch (IOException e) {

    System.err.println("Eroare la citirea de la tastatura:"+ e) ;

    System.exit (2);}

    /**intoarcerea rezultatului */

    return raspuns;}

    }

  • 8/3/2019 Probleme Rezolvate Java

    38/40

    Captura:

    36) Sa se determine distanta euclidina dintre 2 puncte ale caror coordonate se dau in liniade comanda sub forma a 4 numere:

    importjava.io.*;

    import java.util.*;

    import java.text.*;public class Distanta

    {

    public static void main(String a[]) throws Exception

    {NumberFormat f=new DecimalFormat("##0.00");

    double x1=Double.parseDouble(a[0]);

    double y1=Double.parseDouble(a[1]);double x2=Double.parseDouble(a[2]);

    double y2=Double.parseDouble(a[3]);

    System.out.printf("Distanta este:"+"+f.format(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))));

    }

    }

    Date de intrare: x1=4;y1=8;x2=2;y2=6;

    Date de iesire:"Distanta este 2.83"Captura:

    37) Sa se scrie o aplicatie care calculeaza suma a doua numere primite ca argumente inlinia de comanda:

    import java.io.*;public class Adunare

    {

    public static void main(String arg[]) throws Exception{

    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));

  • 8/3/2019 Probleme Rezolvate Java

    39/40

    double nr1,nr2,suma;nr1=Double.parseDoub;e(arg[0]);

    nr2=Double.parseDoub;e(arg[1]);

    suma=nr1+nr2;

    System.out.println("nr1+nr2="+suma);

    }}

    Date de intrare:nr1=7;nr2=5Date de iesire:"nr1+nr2=12.0".

    Captura:

    38)Sa se scrie o aplicatie care rezolva ecuatia de gradul I cu coeficientii primiti ca

    argumente in linia de comanda:importjava.io.*;

    import java.util.*;public class Ecuatie1

    {public static void main(String arg[]) throws Exception{

    BufferdReader in=new BufferedReader(new InputStreamReader(System.in));

    double a,b,x;a=Double.parseDouble(arg[0]);

    b=Double.parseDouble(arg[1]);

    x=(-b)/a;System.out.println("Rezultatul ecuatiei este:"+x);

    }

    }

    Date de intrare: a=4; b=6Date de iesire:" Rezultatul ecuatiei este: -1.5"

    Captura:

    39) Sa se scrie o aplicatiecare calculeaza aria unui dreptunghi cu lungimea si latimeaprimite ca argumente in linia de comanda:

    import java.io.*;import java.util.*;

    public class Dreptunghi

    {

    public static void main(String arg[]) throws Exception{

    BufferdReader in=new BufferedReader(new InputStreamReader(System.in));

    double lung,lat,arie;lung= Double.parseDouble(arg[0]);

    lat= Double.parseDouble(arg[1]);

    arie=lung*lat;System.out.println("Aria dreptunghiului este:"+arie);

    }}

  • 8/3/2019 Probleme Rezolvate Java

    40/40

    Date de intrare:lung=7; lat=9

    Date de iesire:" Aria dreptunghiului este:63.0"

    Captura:

    40) Sa se scrie o aplicatie care sa afiseze numerele prime de la 1 la 100:

    importjava.io.*;import java.util.*;

    public class Prime{

    public static void main(String arg[]) throws Exception

    {for(int i=1;i