Documente Academic
Documente Profesional
Documente Cultură
{ this.orig=getorig.toCharArray();
this.prelucrare();
this.afisare();
}
private boolean ifvowel(char v){
boolean ok=false;
char[] vocale=
{'a','A','e','E','i','I','o','O','u','U'};
for(int i=0;i<vocale.length;i++)
{
if(v == vocale[i])
{ ok=true;
}
} return ok;
}
private void prelucrare()
{
int i;
for(i=0;i<this.orig.length;i++)
{
if(this.ifvowel(this.orig[i]))
{
this.modified=this.modified+this.orig[i
]+'p'+this.orig[i];
}
else
{
this.modified=this.modified+this.orig[i
];
}
}
}
private void afisare()
{
System.out.println(this.modified);
}
}
5.Un magazin de suveniruri ofera
14 gravuri diferite cu Turnul Eiffel.
O gravura costa 25 de Eurocen?
iiar suvenirurile sunt ob?inute
aleator. De ce suma este nevoie
pentru a ob?ine cel pu?in cte o
gravura diferita de fiecare tip?
Indiciu: Folosi?i un generator de
numere aleatoare. Suma de bani
introdusa ar trebui sa varieze la
fiecare execu?ie a programului.
import java.util.Random;
public class Main {
public static boolean exista0(int []
pozitii){
int i;
for (i=0;i<pozitii.length;i++)
if (pozitii[i]==0)
return true;
return false;
}
public static void main(String []args)
{
String []
sir={"g1","g2","g3","g4","g5","g6","g7
","g8","g9","g10","g11","g12","g13","g
14"};
//in vectorul pozitii retin elementele
care au fost generate deja: 1-generat,
0-negenerat
int []pozitii =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int suma=0,p=0;
Random generator = new Random();
//cat timp mai am gravuri necitite,
generez cate o pozitie a unei gravuri
while(exista0(pozitii)==true)
{
//imi generez un numar aleator intre 0
si 14 exclusiv (pozitie gravurii)
p=generator.nextInt(14);
pozitii[p]=1;
suma = suma + 25;
}
System.out.println("Suma este:
"+suma+" Eurocenti");
}
}
6.Ca sa re?ina mai u?or numerele
de telefon ale prietenilor, Alex s-a
gndit sa asocieze fiecarei cifre
un set de litere, ca mai jos:Se da
un numar de telefon de maxim 12
cifre, un numar n reprezentnd
numarul de cuvinte ce trebuie
verificate ?i apoi cele n cuvinte.
Specifica?i daca exista o combina?
ie de cuvinte care sa se
potriveasca perfect pentru
numarul de telefon. Daca nu
exista solu?ie se va afi?a: -N-
Exemplu:
7325189087 5 it your reality real
our Solution: reality our
4294967296 5 it your reality real
our Solution: -Npublic class Problema6Lab2{
public static void main(String args[])
{
StringBuffer sb = new
StringBuffer("reality our");// o noua
instanta de tip StringBuffer()
String newString = sb.toString();
//convertire StringBuffer in String
System.out.println("Cuvantul ce
trebuie verificat :\"" + newString +
"\"");
String Final= newString
//folosim functia .replaceAll() pentru
inlocuirea literelor cu cifra
corespunzatoare
.replaceAll("i", "1").replaceAll("j", "1")
.replaceAll("a", "2").replaceAll("b",
"2").replaceAll("c", "2")
.replaceAll("d", "3").replaceAll("e",
"3").replaceAll("f", "3")
.replaceAll("g", "4").replaceAll("h",
"4")
.replaceAll("k", "5").replaceAll("l",
"5")
.replaceAll("m", "6").replaceAll("n",
"6")
.replaceAll("p", "7").replaceAll("r",
"7").replaceAll("s", "7")
.replaceAll("t", "8").replaceAll("u",
"8").replaceAll("v", "8")
.replaceAll("w", "9").replaceAll("x",
"9").replaceAll("y", "9")
.replaceAll("o", "0").replaceAll("q",
"0").replaceAll("z", "0");
//afisare
System.out.println("Numar asociat
numarului este: \"" + Final + "\"");
}
}
Tema3
1.Scrieti o aplicatie Java care
defineste intr-o clasa doua
variabile intregi. Definiti metodele
care aduna variabilele, extrag
radical din diferenta lor, le
convertesc in String, le
concateneaza si inverseaza sirul
astfel obtinut. Toate metodele
returneaza valori care vor fi
afisate in functia main, prin
intermediul unei instante a clasei.
public class Test {
public static void main(String[] args)
{
System.out.println("Suma este:
"+Metode.aduna());
System.out.println("Radicalul din
diferenta este: "+Metode.radical());
System.out.println("Sirul convertit in
String este: "+Metode.convet()+"
"+Metode.convert2());
System.out.println("Sirul concatenat
si inversat este:
"+Metode.concatenare());
}
}
public class Metode {
static int x=10,y=7;
public static int aduna(){
return x+y;
}
public static float radical(){
return (float) Math.sqrt(x-y);
}
public static String convet(){
return Integer.toString(x);
//converteste un intreg in string
}
public static String convert2(){
return Integer.toString(y);
}
public static StringBuffer
concatenare(){
String sir =
Integer.toString(x).concat(Integer.toStr
ing(y)); //concateneaza
return new StringBuffer(sir).reverse();
//inversarea sirului
}
}
2.Scrieti o aplicatie Java care
defineste intr-o clasa o matrice de
valori float. Aplicatia va afisa atat
numarul de elemente nule care
}
if(i==n-1 && j==0 && matrice[i]
[j]==0)//verificam elementul de pe
prima linie din colt jos
if (matrice[i][j+1] != 0 && matrice[i1][j+1] != 0 && matrice[i-1][j]!=0)
{
c++;
Pozitie p = new Pozitie(i,j);
pozitii.add(p);
}
if(j==0 && i!=0 && i!=m-1 &&
matrice[i][j]==0)//verificam
elementele de pe prima coloana
diferite de colturi
if (matrice[i+1][j] != 0 &&
matrice[i+1][j+1] != 0 && matrice[i]
[j+1]!=0 && matrice[i-1][j+1]!=0 &&
matrice[i-1][j]!=0 )
{
c++;
Pozitie p = new Pozitie(i,j);
pozitii.add(p);
}
if(i==0 && j==0 && matrice[i]
[j]==0)//verificam primul element
if (matrice[i+1][j] != 0 &&
matrice[i+1][j+1] != 0 && matrice[i]
[j+1]!=0)
{
c++;
Pozitie p = new Pozitie(i,j);
pozitii.add(p);
}
if(i!=0 && i!=n-1 && j!=0 && j!=m-1
&& matrice[i][j]==0)//verficam
elementele din mijlocul matricii
if (matrice[i-1][j] != 0 && matrice[i1][j+1] != 0 && matrice[i][j+1]!=0 &&
matrice[i+1][j+1]!=0 && matrice[i+1]
[j]!=0 && matrice[i+1][j-1]!=0 &&
matrice[i][j-1]!=0 && matrice[i-1][j-1]!
=0)
{
c++;
Pozitie p = new Pozitie(i,j);
pozitii.add(p);
}
}
return c;
}
public void
afiseazaPozitii()//parcugem pozitiile si
le afisam
{
int i;
for (i=0;i<pozitii.size();i++)
pozitii.get(i).afiseaza();
}
}
public class Pozitie {//retine positiile
elementelor nule din matrice
private int i;
private int j;
public Pozitie(int v1,int v2)
{
i = v1;
j = v2;
}
public void afiseaza()
{
i++;
j++;
System.out.println("("+i+","+j+")");
}
}
3.Se defineste o clasa care are
drept atribut un sir de valori
intregi. Sa se scrie metodele care
creaza si afiseaza un alt sir format
din elementele din sirul initial,
luate o singura data, ordonate
crescator. Instantiati clasa si
folositi metodele create.
public class Main {
public static void main(String[] args){
Sir e;//am declarat o clasa de tip Sir
e=new Sir();//o noua instanta a clasei
Sir
e.multime();//apelam metoda
multime
e.ordonare();
e.afisare();
}
}
public class Sir {
private int sir[]=new int[]
{1,2,3,1,5,4,6};
private int sir2[]=new int[10];
public Sir(){
}
public boolean exista(int a)
{//ferificam daca mai avem in sir2
elementul din sir
boolean b;int i;
b=false;
for (i=0;i<sir2.length;i++){
if (sir2[i]==a){
b=true;
return b;
}
}
return b;
}
public void multime()//eliminam sin
sir elementele care se repeta
{
int n,i;
n=0;
for (i=0;i<sir.length;i++) {
if (exista(sir[i])==false){
sir2[n]=sir[i];
n++;
}
}
}
public void ordonare()//ordonam sirul
{
int i,aux,j;
for(i=0;i<=sir2.length/2;i+
+)//parcurgem sirul pana la jumate
for(j=sir2.length1;j>sir2.length/2;j--)//parcurgem sirul
de la sfarsit pana la jumate
if(sir2[i]>sir2[j]){
aux=sir2[i];
sir2[i]=sir2[j];
sir2[j]=aux;
}
}
public void afisare(){
int i;
for (i=0;i<sir2.length;i++)
System.out.print(sir2[i]+" ");
}
}
4.Un restaurant vrea sa-?i
pastreze mereu clien?ii mul?umi?i.
Pentru a realiza acest lucru,
fiecarecomanda este prioritizata
}
//sortare dupa prioritate 1 2 3
for(int i=1;i<=nrcomenzi;i++)
for(int j=i+1;j<=nrcomenzi;j++)
{
if(comenzi[i].prioritate >
comenzi[j].prioritate)
{
Comanda copie = comenzi[i];
comenzi[i]=comenzi[j];
comenzi[j]=copie;
}
}
//sortare dupa nr persoane
for(int i=1;i<=nrcomenzi;i++)
for(int j=i+1;j<=nrcomenzi;j++)
{
if(comenzi[i].prioritate ==
comenzi[j].prioritate)
if(comenzi[i].nrpersoane <
comenzi[j].nrpersoane)
{
Comanda copie = comenzi[i];
comenzi[i]=comenzi[j];
comenzi[j]=copie;
}
}
//sortare dupa suma
for(int i=1;i<=nrcomenzi;i++)
for(int j=i+1;j<=nrcomenzi;j++)
{
if(comenzi[i].prioritate ==
comenzi[j].prioritate &&
comenzi[i].nrpersoane ==
comenzi[j].nrpersoane )
if(comenzi[i].suma <
comenzi[j].suma)
{
Comanda copie = comenzi[i];
comenzi[i]=comenzi[j];
comenzi[j]=copie;
}
}
System.out.println("Sortate dupa
prioritate:");
for(int i=1;i<=nrcomenzi;i+
+)System.out.println("Comanda nr :
"+ i+" "+ comenzi[i].afisare());
}
}
{
if(i==5)
{
System.out.println(" "+array[j][i]);
}
else
{
System.out.print(" "+array[j][i]);
}
}
}
}
public static boolean
verificarand(int[][] matrice, int rand,
int num )//verifica radurile pentru
prezenta numarului nul
{
for(int col =0; col<6; col++)
if(matrice[rand][col] == num)
return false ;
return true ;
}
public static boolean
verificacoloana(int[][] grid, int col, int
num)//verifica coloanele pentru a
vedea daca avem numar pus sau
trebuie sa complectam
{
for(int rand = 0; rand < 6; rand++)
if(grid[rand][col] == num)
return false ;
return true ;
}
public static boolean
verificacutia(int[][] grid, int row, int
col, int num)//verifca daca avem in
matricea de 2x3 avem numar nul
{
row = (row / 2) * 2 ;//facem patratele
de 2x3
col = (col / 3) * 3 ;
for( int r = 0; r < 2; r++ )
{
for( int c = 0; c < 3; c++ )
{
if(grid[row+r][col+c] ==
num )//verifica coloanele si randurile
din cutie
return false ;
}
}
return true ;
}
public static void next(int[][] puzzle,
int row, int col)
{
if(col<=4)
solve(puzzle,row,col+1);//apeleaza
functia solve
else
solve(puzzle,row+1,0);
}
public static int solve(int[][] puzzle,
int rand, int col)
{
if(rand>5)
{
System.out.println("Solutia gasita:");
afiseazamatricea(puzzle);
return 0;
}
if(puzzle[rand][col] != 0)
{
next(puzzle,rand,col);//recursivitate
apeleaza functia next
}
else
{
for(int num = 1;num<7;num+
+)//parcurge numerele care trebuie
puse
{
if(verificarand(puzzle,rand,num) &&
verificacoloana(puzzle,col,num) &&
verificacutia(puzzle,rand,col,num))
{
//daca avem numar pe pozitie atunci
trecem la elementul urmator cu
functia next
//daca nu avem numar pe pozitie
atunci apelam functia solve si punem
un numar care nu a mai fots pus
puzzle[rand][col] = num;
next(puzzle,rand,col);
}
}
puzzle[rand][col] = 0;
}
return 0;
}
}
6.Toate comunica?iile ntre ora?e
au cazut. Pentru a putea
comunica, supravie?uitorii
folosesc cod morse. Scrie?i un
program care transforma o
propozi?ie n cod morse.Despar?
irea ntre litere se face cu
caracterul /. Despar?irea ntre
propozi?ii se face cu caracterul
//.
Exemplu:SOS => ... / --- /...
public class Main {
public static void main(String[] args) {
String propozitie = null;
System.out.println("Sirul initial
este: \"" +Codmorse.prop(propozitie)
+"\"");
System.out.print("Sirul convertit in
codul Morse este: \"");
Codmorse.converteste("sos . SOS");
System.out.print("\"");
}
}
public class Codmorse {
static String prop(String propozitie){
String sentence = new String("sos.
SOS");//declararea sirului
return sentence; //returneaza stringul
ce contine propozitia
}
static String converteste(String
sentence){
//declarare vector ce contine literele
convertite in codul morse
String[] morse =
{".-/","-.../","-.-./","-../","./","..-./","--./",".
.../","../",
".---/","-.- /",".-../","--/","-./","---/",".--./","
--.-/",".-./",".../","-/","..-/",
"...-/",".--/","-..-/","-.--/","--../","//"," \
//parcurgerea propozitiei
for(int x = 0; x<sentence.length();
x++){
char ch = sentence.charAt(x);//ch
reprezinta pozitia fiecarui element din
sentence
//switch case
switch(ch){//cazul in care avem in
sentence 'a' sau 'A' inlocuim litera cu
ce se afla pe prima pozitie in codul
morse
case 'a':
case 'A':
System.out.print(morse[0]); break;
case 'b':
case 'B':
System.out.print(morse[1]); break;
case 'c':
case 'C':
System.out.print(morse[2]); break
case 'd':
case 'D':
System.out.print(morse[3]); break;
case 'e':
case 'E':
System.out.print(morse[4]); break;
case 'f':
case 'F':
System.out.print(morse[5]); break;
case 'g':
case 'G':
System.out.print(morse[6]); break;
case 'h':
case 'H':
System.out.print(morse[7]); break;
case 'i':
case 'I':
System.out.print(morse[8]); break;
case 'j':
case 'J':
System.out.print(morse[9]); break;
case 'k':
case 'K':
System.out.print(morse[10]); break
case 'l':
case 'L':
System.out.print(morse[11]); break;
case 'm':
case 'M':
System.out.print(morse[12]); break;
case 'n':
case 'N':
System.out.print(morse[13]); break;
case 'o':
case 'O':
System.out.print(morse[14]); break;
case 'p':
case 'P':
System.out.print(morse[15]);
case 'q':
case 'Q':
System.out.print(morse[16]);
case 'r':
case 'R':
System.out.print(morse[17]);
case 's':
case 'S':
System.out.print(morse[18]);
case 't':
case 'T':
System.out.print(morse[19]);
case 'u':
case 'U':
System.out.print(morse[20]);
case 'v':
case 'V':
System.out.print(morse[21]);
case 'w':
case 'W':
System.out.print(morse[22]);
case 'x':
case 'X':
System.out.print(morse[23]);
case 'y':
case 'Y':
System.out.print(morse[24]);
case 'z':
case 'Z':
System.out.print(morse[25]);
case '.':
System.out.print(morse[26]);
case ' ':
System.out.print(morse[27]);
}
}
return sentence;
}
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
}
Tema4
1. Scrieti un program Java care defineste
o clasa numita Persoana cu urmatoarele
atribute: nume o variabila de tip String,
protected si x si y variabile intregi,
protected. Clasa contine un constructor
explicit fara parametric care initializeaza
x si y cu 0 si nume cu null. O metoda
finalize() va fi folosita pe post de
System.out.println("r="+cerc1.r);
Circle cerc2=new Circle(5.8);
System.out.println("Constructor cu
parametru:");
System.out.println("x="+cerc2.x);
System.out.println("y="+cerc2.y);
System.out.println("r="+cerc2.r);
Circle cerc3=new Circle();
Circle cerc4;
cerc4=cerc3;//se copiaza cerc3 in
cerc4
System.out.println("Constructor
copiere:");
System.out.println("x="+cerc4.x);
System.out.println("y="+cerc4.y);
System.out.println("r="+cerc4.r);
}
}
3. Scrieti o clasa numita
2DCoordinates care are 2 variabile
protected int x si y. Un
constructor explicit cu 2 parametri
va initializa atributele si metodele
accesor getX(), getY()vor returna
valorile lui x, respectiv y. O clasa
numita 3DCoordinates, derivata din
prima, va defini o noua variabila
protected int z. Constructorul
explicit cu 3 parametri va apela
constructorul clasei 2DCoordinates
folosind metoda super(). O noua
metoda getZ() va fi definita. In
clasa care contine metoda main()
instantiati un obiect 2DCoordinates
si doua obiecte 3DCoordinates,
folosind niste valori predefinite.
Afisati atributele obiectelor create.
class D2Coordinates
{
protected int x,y;
D2Coordinates(int x, int y)
{
this.x=x;
this.y=y;
}
void getX()
{
System.out.println("Valoare lui x
este: "+x);
}
void getY()
{
System.out.println("Valoare lui y
este: "+y);
}
}
class D3Coordinates extends
D2Coordinates
{
protected int z;
D3Coordinates(int x, int y, int z)
{
super(x,y);
this.z=z;
}
void getZ()
{
System.out.println("Val. lui z:"+z);
}
}
//clasa ce instantiaza clasa
D2Coordinates
public class Main
{
public static void main(String a[])
{
D2Coordinates ob1=new
D2Coordinates(7,4);
D3Coordinates ob2=new
D3Coordinates(4,5,8);
System.out.println("Coordonatele
obiectului 1 sunt: ");
ob1.getX();
ob1.getY();
System.out.println("Coordonatele
obiectului 2 siunt: ");
ob2.getX();
ob2.getY();
ob2.getZ();
}
}
4. Definiti o interfata numita Skills
care defineste prototipurile
functiilor int
getRunningTime(int laps), int
getSwimmingTime(int
pool_lengths) si String
getTimeFormat(int milliseconds).
Interfata mai contine constantele
int timePerLap si int
timePerPoolLength. Toate valorile
intregi mentionate mai sus
reprezinta un numar
de milisecunde. Definiti 2 clase
Runner si Swimmer care
implementeaza interfata Skills.
fiecare clasa stocheaza in niste
variabile specifice numarul de ture
de pista sau de lungimi de bazin
precum si numele sportivului.
Clasele vor oferi implementari
specifice metodelor mostenite din
interfata. Creati cateva instante ale
claselor definite si
ordonati alergatorii si inotatorii
dupa timpii obtinuti. La afisare
"+swim[1].setName("Stef Stefan")+" a
innotat intr-un timp de
"+swim[1].getTimeFormat(swim[1].get
SwimmingTime(4))+" [mm:ss:ms] si a
facut
"+swim[1].numarul_de_lungime_bazin
+" lungimi de bazin.");
System.out.println("Sportivul
"+swim[2].setName("Radu Ioan")+" a
innotat intr-un timp de
"+swim[2].getTimeFormat(swim[2].get
SwimmingTime(7))+" [mm:ss:ms] si a
facut
"+swim[2].numarul_de_lungime_bazin
+" lungimi de bazin.");
System.out.println("Sportivul
"+swim[3].setName("Radu Ioan")+" a
innotat intr-un timp de
"+swim[3].getTimeFormat(swim[3].get
SwimmingTime(10))+" [mm:ss:ms] si
a facut
"+swim[3].numarul_de_lungime_bazin
+" lungimi de bazin.");
System.out.println("");
System.out.println("Dupa
ordonare:");
for(int i=0;i<nr_innotatori;i++)
for(int j=i+1;j<nr_innotatori;j++)
{
int lungime_bazin = 0;
if(swim[i].getSwimmingTime(lungime_
bazin) >
swim[j].getSwimmingTime(lungime_ba
zin))
{
Swimmer x = swim[i];
swim[i]=swim[j];
swim[j]=x;
}
System.out.println("Sportivul
"+swim[i].setName(swim[i].sportiv_nu
me)+" a innotat intr-un timp de
"+swim[i].getTimeFormat(swim[i].getS
wimmingTime(lungime_bazin))+"
[mm:ss:ms] si a facut
"+swim[i].numarul_de_lungime_bazin
+" lumgimi de bazin.");
}
}
}
5. Definiti o clasa abstracta numita
Coder care declara prototipurile
metodelor care codeaza si
decodeaza o variabila de tip String
si integer potrivit unei chei primite
ca parametru. O a doua clasa
numita ExplicitCoder este derivata
din prima si defineste metodele
((Coder)d).DecodareInteger(9) + "].");
System.out.println("Downcasting...");
Coder e = new ExplicitCoder();
Coder f = new
ExplicitCoderExtended();
System.out.println("String-ul codat
este: [" +
((ExplicitCoder)e).CodareString("<><
>") + "], iar string-ul decodat este ["+
((ExplicitCoder)e).DecodareString("<>
<>") + "].");
System.out.println("Intregul codat
este: [" +
((ExplicitCoder)e).CodareInteger(32) +
"], iar intregul decodat este [" +
((ExplicitCoder)e).DecodareInteger(32)
+ "].");
System.out.println("String-ul codat
este: [" +
((ExplicitCoderExtended)f).CodareStrin
g(":::") + "], iar string-ul decodat este
["+
((ExplicitCoderExtended)f).DecodareSt
ring(":::") + "].");
System.out.println("Intregul codat
este: [" +
((ExplicitCoderExtended)f).CodareInte
ger(87) + "], iar intregul decodat este
[" +
((ExplicitCoderExtended)f).DecodareInt
eger(87) + "].");
}
}
7. Scrieti o clasa a carei instante
reprezinta un ntreg pachet de
carti. Cartile de joc au doar 2
proprietati: rang si culoare.
Verificati daca un set 3 de arti
extrase aleator din pachet pot
rezulta n 3 carti crescatoare, 3
carti e aceeasi culoare sau 3 carti
de acelasi rang. Cartile extrase nu
se pun napoi n achet.
Daca programul gaseste astfel de
carti, acestea vor fi afisate. Daca
nu, programul afiseaza:
public class Problema7 {
public static void main(String[] args)
{
Cartejoc pachet=new Cartejoc();
for(int i=1;i<=17;i++)
{
int [] carte1=pachet.extragecarte();
int [] carte2=pachet.extragecarte();
int [] carte3=pachet.extragecarte();
/////verificare 3 carti crescatoare
//System.out.println("Carti in ordine
crescatoare dupa rang:");
if(carte1[1]<carte2[1] &&
carte2[1]<carte3[1])
{
System.out.println("3 carti in ordine
crescatoare:
"+carte1[0]+"."+carte1[1]+"~~~"+ca
rte2[0]+"."+carte2[1]+"~~~"+carte3[
0]+"."+carte3[1]);
}
else
{
System.out.println("-N-");
}
import java.util.*;
public class Cartejoc {
int count=0;
int pachet[][] =new int [5][16];
Random rand =new Random();
public int getCuloare()
{
return this.rand.nextInt(4)+1;
}
public int getRang()
{
return this.rand.nextInt(13)+2;
}
public int[] extragecarte()
{
int culoare=this.getCuloare();
int rang=this.getRang();
if( this.count < 52 )
{
while(this.pachet[culoare]
[rang]==1)
{
culoare=this.getCuloare();
rang=this.getRang();
}
this.pachet[culoare][rang]=1;
this.count++;
}
int[] carte=new int[2];
carte[0]=culoare;
carte[1]=rang;
return carte;
}
}
Tema 5
/*1.Folositi pachetul ccj pentru
a citi de la tastatura
elementele unei matrice de 3x3
numere intregi. Folosind
operatorul pe biti &,
determinate care sunt pozitiile
elementelor impare si afisati
numarul lor.*/
import java.lang.String;
import ccj.*;
class Problema1
{
public static void main(String args[])
{
int n=0,i,j;
int m[][]=new int[3][3];//declarare
matrice de 3x3
System.out.println("Introduceti
elementele matricii:");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
m[i][j]=Console.in.readInt();//citire
de la tastatura
}
System.out.print("Matricea
introdusa este:");
//afisare matrice
for(i=0;i<3;i++)
{
System.out.print("\n");
for(j=0;j<3;j++)
{
System.out.print(m[i][j]+" ");
if(m[i][j]%2==1)n++;//determinare
elemente impare
}
}
if(n!=0){ {
System.out.print("\nAti introdus
"+n+" elemente impare.\n");
System.out.println();
System.out.print("Elementele impare
au urmatoarele pozitii: ");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(m[i][j]
%2==1)System.out.print("\nElementul
["+m[i][j]+"] pe linia ["+(i+1)+"] si
coloana ["+(j+1)+"];");
}
else System.out.print("\nNu ati
introdus nici un element impar!!!");
}
}
/*2. Definiti un pachet numit
UserPackage care va fi folosit
pentru citirea de la tastatura a
variabilelor de tip String.
Pachetul contine o clasa numita
Read care efectueaza
}
}//sortarea alfabetica a sirurilor
for(int i=0;i<n;i++){
System.out.println(string[i]);//afisarea
sirurilor introduse
}
//pentru intregi
do{
System.out.print("Introduceti un
intreg de la tastatura: ");
intreg[n]=Read.ReadInt();//citire in
string
n++;
System.out.print("Doriti sa mai
introduceti un intreg? [Da/Nu] ");
continua2=Read.ReadInt();//citire in
flag
}
while(continua.equalsIgnoreCase("da")
);
System.out.println("Intregii introdusi
afisati in ordine crescatoare sunt:");
for(int i=0;i<n-1;i++)
{
if(intreg[i]>intreg[i+1])
{
int aux=intreg[i];
intreg[i]=intreg[i+1];
intreg[i+1]=aux;
}
}
for(int i=0;i<n;i++){
System.out.println(intreg[i]);//afisarea
intregilor introdusi
}
//pentru float
do{
System.out.print("Introduceti un
float de la tastatura: ");
flotant[n]=Read.ReadFloat();//citire
in string
n++;
System.out.print("Doriti sa mai
introduceti un float? [Da/Nu] ");
continua3=Read.ReadFloat();//citire
in flag
}
while(continua.equalsIgnoreCase("da")
);
System.out.println("Flotantii introdusi
afisati in ordine crescatoare sunt:");
for(int i=0;i<n-1;i++)
{
if(flotant[i]>flotant[i+1])
{
float aux=flotant[i];
flotant[i]=flotant[i+1];
flotant[i+1]=aux;
}
}
for(int i=0;i<n;i++){
System.out.println(flotant[i]);//afisarea
flotantilor introdusi
}
//pentru double
do{
System.out.print("Introduceti un
double de la tastatura: ");
dublu[n]=Read.ReadDouble();//citire
in string
n++;
System.out.print("Doriti sa mai
introduceti un float? [Da/Nu] ");
continua4=Read.ReadDouble();//citire
in flag
}
while(continua.equalsIgnoreCase("da")
);
System.out.println("Doubles introdusi
afisati in ordine crescatoare sunt:");
for(int i=0;i<n-1;i++)
{
if(dublu[i]>dublu[i+1])
{
double aux=dublu[i];
dublu[i]=dublu[i+1];
dublu[i+1]=aux;
}
}
for(int i=0;i<n;i++){
System.out.println(dublu[i]);//afisarea
doubles introdusi
} }
}
/*3. Definiti un pachet care
declara interfata Int1 (2
variabile intregi si o metoda
System.out.println("Prelucrarea
numerelor "+Class1.a+" si
"+Class1.b+" de tip intreg din Int1
implementata cu Class1!");
System.out.println("Suma lor este:
"+ob1.sum(Class1.a,Class1.b));
System.out.println("Prelucrarea
numerelor "+Class2.e+" si
"+Class2.f+" de tip double din Int2
implementata cu Class2!");
System.out.println("Produsul lor
este:
"+ob1.product(Class2.e,Class2.f));
}
public double product(double x,
double y)
{
return x*y;
}}
/*5. Definiti un pachet Java
numit operator care contine
clasa Operations. In clasa
exista metode care ilustreaza
functionarea operatorilor binari
si unari +, -, *, /, &, |, <<,
>>, >>>, ++, -- atunci cand
sunt aplicati asupra unor
variabile primite ca parametri.
Metodele afiseaza operanzii si
rezultatul in binar si returneaza
rezultatul ca valoare intreaga.
Utilizati pachetul creat pentru a
prelucra doua valori intregi
predefinite. */
//pachetul
package Operator;
public class Operations {
public int Plus(int a, int b)
{
//operatorul +
System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
+, iar suma lor in binar este:
"+Integer.toBinaryString(a+b));
return a+b;
}
public int Minus(int a, int b)
{
System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
<<, iar << lor in binar este: ");
return a<<b;
}
public int DeplDreapta(int a, int b)
{
//operatorul >>
System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
>>, iar >> lor in binar este: ");
return a>>b;
}
public int Shiftare(int a, int b)
{
//operatorul >>>
System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
>>, iar >>> lor in binar este: ");
return a>>>b;
}
public int Inc(int a, int b)
{
//operatorul ++
System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
++, iar ++ lui "+a+" in binar
este: ");
return ++a;
}
public int Dec(int a, int b)
{
//operatorul -System.out.println("Operanzii sunt
"+a+" si "+b);
System.out.println("Operandul este
--, iar -- lui "+b+" in binar este:
");
return --b;
}
}
//clasa principala
import Operator.*;
public class MainClass {
public static void main(String[]
args){
int a = 4;
int b = 6;
Operations ob = new Operations();
System.out.println("Suma in intreg:
"+ob.Plus(a, b));
System.out.println("Diferenta in
intreg: "+ob.Minus(a, b));
System.out.println("Produsul in
intreg: "+ob.Ori(a, b));
System.out.println("Impartirea in
intreg: "+ob.Impartire(a, b));
System.out.println("Si in intreg:
"+ob.Si(a, b));
System.out.println("Sau in intreg:
"+ob.Sau(a, b));
System.out.println("<< in intreg:
"+ob.DeplStanga(a, b));
System.out.println(">> in intreg:
"+ob.DeplDreapta(a, b));
System.out.println(">>> in intreg:
"+ob.Shiftare(a, b));
System.out.println("++ in intreg:
"+ob.Inc(a, b));
System.out.println("-- in intreg:
"+ob.Dec(a, b));
}
}
/*6. Definiti un pachet
anotimpuri. Creati in pachet o
noua interfata, anotimp, care
defineste metodele void
Culoare(), void Temperatura() si
void Afiseaza(). Definiti 4 clase
Primavara, Vara, Toamna si
Iarna, care sa implementeze
interfata anotimp si apoi sa
suprascrie metodele din
interfata cu metodele
Culoare(string culoare) si
Temperatura(string temperatura).
Creati un nou fisier, in pachetul
default, importati pachetul
anotimpuri si creati cate un
obiect de tipul Primavara, Vara,
Toamna si Iarna. Setati
temperatura si culoarea pentru
fiecare anotimp si
afisati rezultatele obtinute. */
//pachet
package Anotimpuri;
System.out.println("Culoarea
anotimpului este: "+culoare+".");
}
public void Temperatura(String
temperatura)
{
System.out.println("Temperatura
este de: "+temperatura+" grade
Celsius.");
}
public void Afiseaza()
{
System.out.println("Anotimpul este
Vara, cu urmatoarele
caracteristici:");
}
@Override
public void Culoare() {
// TODO Auto-generated method
stub
}
@Override
public void Temperatura() {
// TODO Auto-generated method
stub
}
}
//clasa Toamna, implementeaza
Anotimp
package Anotimpuri;
public class Toamna implements
Anotimp {
String culoare = null;
String temperatura = null;
public void Culoare(String culoare)
{
System.out.println("Culoarea
anotimpului este: "+culoare+".");
}
public void Temperatura(String
temperatura)
{
System.out.println("Temperatura
este de: "+temperatura+" grade
Celsius.");
}
public void Afiseaza()
{
System.out.println("Anotimpul este
Toamna, cu urmatoarele
caracteristici:");
}
@Override
public void Culoare() {
// TODO Auto-generated method
stub
}
@Override
public void Temperatura() {
// TODO Auto-generated method
stub
}
}
//clasa Iarna, implementeaza
Anotimp
package Anotimpuri;
public class Iarna implements
Anotimp {
String culoare = null;
String temperatura = null;
public void Culoare(String culoare)
{
System.out.println("Culoarea
anotimpului este: "+culoare+".");
}
public void Temperatura(String
temperatura)
{
System.out.println("Temperatura
este de: "+temperatura+" grade
Celsius.");
}
public void Afiseaza()
{
System.out.println("Anotimpul este
Iarna, cu urmatoarele
caracteristici:");
}
@Override
public void Culoare() {
// TODO Auto-generated method
stub
}
@Override
public void Temperatura() {
// TODO Auto-generated method
stub
}
}
//clasa principala
import Anotimpuri.*;
public class MainClass {
public static void main(String[]
args){
//declarare obiecte de tip
Primavara, Vara, Toamna, Iarna si
setarea lor.
Primavara ob1 = new Primavara();
ob1.Afiseaza();
ob1.Culoare("Verde deschis");
ob1.Temperatura("20");
System.out.println();
Vara ob2 = new Vara();
ob2.Afiseaza();
ob2.Culoare("Verde");
ob2.Temperatura("35");
System.out.println();
Toamna ob3 = new Toamna();
ob3.Afiseaza();
ob3.Culoare("Maro");
ob3.Temperatura("15");
System.out.println();
Iarna ob4 = new Iarna();
ob4.Afiseaza();
ob4.Culoare("Verde");
ob4.Temperatura("35");
}
}
Tema6
1. Cititi de la tastatura o serie
de perechi de numere (int,
float, etc.) si incercati sa
obtineti catul impartirii lor.
Afisati rezultatul.Tratati exceptia
de tip ArithmeticException data
de incercarea de a imparti un
numar la 0.*In modulul catch
aferent, dati impartitorului o
valoare predefinita si apoi
afisati rezultatul
impartirii.*Rescrieti codul de
mai sus folosind o metoda
numita divide() care
semnalizeaza exceptia de tip
ArithmeticException. *In functia
main(), tratati exceptia
semnalizata de metoda.
import java.io.DataInputStream;
import java.lang.String;
import java.io.IOException;
public class Tema2
{
public static void
main(String args[])
{
int n,m;
float p,q;
String numStr1=null;
String numStr2=null;
try
{
System.out.flush();
DataInputStream
dis=new
DataInputStream(System.in);
System.out.println("Introduceti doua
numere intregi:");
numStr1=dis.readLine();
numStr2=dis.readLine();
n=Integer.parseInt(numStr1);
m=Integer.parseInt(numStr2);
try
{
int rez=n/m;
System.out.println(n+" : "+m+" =
"+rez);
}
catch(ArithmeticException e)
{
System.out.println("Impartitor 0!");
}
}
catch (IOException ioe)
{
System.out.println(ioe.toString());
System.exit(1);
}
//incercare pentru float
try
{
System.out.flush();
DataInputStream
dis=new
DataInputStream(System.in);
System.out.println("Introduceti doua
numere reale:");
numStr1=dis.readLine();
numStr2=dis.readLine();
p=Float.parseFloat(numStr1);
q=Float.parseFloat(numStr2);
try
{
if(q==0)System.out.println("Impartitor
0!");
else
{
float
rez=p/q;
System.out.println(p+" : "+q+" =
"+rez);
}
}
catch(ArithmeticException e)
{
ArithmeticException,Exception
{
x=x/j;
if(j==0)throw new
Exception("din Divide");
return x;
}
public static void main (String[]
args)
{
double y;
Tema cls=new Tema();
int n,m;
String numStr1=null;
String numStr2=null;
try
{
for(int i=0;i<4;i++)
{
System.out.flush();
DataInputStream
System.out.println("Impartitor 0!");
}
}
catch (IOException ioe)
{
dis=new
DataInputStream(System.in);
System.out.println(ioe.toString());
System.exit(1);
}
}
}
*Rescrieti codul problemei
anterioare folosind o metoda
numita divide() care
semnalizeaza
exceptia de tip
ArithmeticException. In functia
numStr1=dis.readLine();
System.out.println("Numerele intregi
sunt :");
numStr2=dis.readLine();
n=Integer.parseInt(numStr1);
m=Integer.parseInt(numStr2);
try
{
y=cls.Divide(n,m);
System.out.println("Impartitorul este:
"+m);
System.out.println("Catul este: "+y);
}
catch(ArithmeticException e)
{
System.out.println("Impartire cu
zero!!!(geniule)");
m=1;
}
catch(Exception
e)
{
e.printStackTrace();
}
}
}
catch (IOException
{
ioe)
System.out.println(ioe.toString());
System.exit(1);
}
}
}
/*2.Definiti o clasa de tip
exceptie derivata dintr-o clasa
specifica, responsabila cu
tratarea exceptiilor *care apar
la incercarea de a converti in
valori numerice anumite
variabile de tip String care
contin date non-numerice.
*Folositi aceasta clasa pentru a
monitoriza o secventa de cod
care apartine functiei main(),
citeste de la tastatura valoarea
*non-numerica a unei variabile
de tip String si apoi incearca
sa o converteasca intr-un
numar intreg. Afisati continutul
stivei *program din zona
exceptiei aparute.
import javax.swing.JOptionPane;
break;
}
}
if (b==true)
{
int
j=Integer.parseInt(s);
JOptionPane.showMessageDialog(null,
"Ati introdus numarul integer: "+j);
}
else throw new
NumberFormatException("Stringul nu
este numar, nu poate fi
convertit!");
}//end convert
}//end class derivata_NFE
class Tema4//clasa Tema4, contine
main
{
public static void main(String
args[])//metoda main
{
derivata_NFE x=new
derivata_NFE();//obiect nou al clasei
definite
String st=x.read();//apelam
metoda de citire
try//se incearca conversia
{
x.convert(st);
}
catch
(NumberFormatException e)//daca nu
a reusit conversia, se da mesaj de
exceptie
{
e.printStackTrace();//se
afiseasa stack trace
JOptionPane.showMessageDialog(null,
e.getMessage());
System.exit(0);
}
System.exit(0);
}//end main
}//end class Tema
/* 3.Scrieti o aplicatie Java care
implementeaza un bloc de cod
care poate sa genereze exceptii
DataInputStream
data=new
DataInputStream(System.in);
d=Double.parseDouble(data.readLine(
));
}//end try
catch(IOException
ww)//daca nu a reusit citirea, se da
mesaj de exceptie
{
System.out.print("Exceptie la citirea
numarului double!");
}//end catch
}//end read
public void div() throws
Exception//metoda de divizare
{
if (d==0) throw new
Exception ("Eroare la diviziune cu
0!");//exceptie daca se incearca
diviziune cu 0
else
{
j=i/d;
System.out.print(i+" :
"+d+" = "+j);//daca diviziunea este
corecta, se afiseaza mesaj
}
}//end div
}//end class exc
class Tema5 //class Tema5, contine
main
{
public static void main(String
args[])//metoda main
{
exc b1=new exc();//se
creeaza un obiect nou ce apartine
clasei exc
b1.read();//se apeleaza
metoda de citire
try//se incearca divizarea
{
b1.div();
}//end try
catch (Exception e)//daca
divizarea nu a reusit, se afiseaza
mesaj de exceptie
{
System.out.print(e.getMessage());
System.exit(0);
}//end catch
System.exit(0);
}//end main
}//end class Tema
/*4. Scrieti o aplicatie Java
care defineste o clasa care are
ca atribut privat un sir de
*tring-uri reprezentand
numele unor studenti. Numarul
inregistrarilor este predefinit si
are valoarea 20. *Numarul real
de variabile este determinat
prin citirea lor de la tastatura,
cu confirmare. Implementati
*un algoritm de sortare
alfabetica a elementelor din sir
(20 de pozitii) si tratati
exceptiile produse de accesarea
*elementelor inexistente.
public class Testproblema4 {
public static void main(String[]
args) throws Exception {
Studenti STD =new
Studenti();
for(int i=0;i<5;i++)
{
try
{
STD.read(i);
}catch(Exception e){
System.out.print(e.getMessage());
}
}
STD.sortare();
STD.afisare();
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.String;
public class Studenti {
public int limit=20;
private String[]studenti=new
String[20];
}
public void sortare(){
for(int
i=0;i<this.limit;i++)
{
for(int
j=i+1;j<this.limit;j++)
{
try{
System.out.print("Introduceti numele
celui deal "+i+" student:");
sample =
br.readLine();
this.interschimbare(i,j);
if(sample.length()==0)
System.out.println(e.getMessage());
}
}
}
}
public void afisare(){
for(int i=0;i<limit;i++)
{
{
this.studenti[i]= new String();
throw
new Exception("Numele nu a fost
setat");
}
else
{
this.studenti[i]=sample;
}
}
public void
interschimbare(int i,int j) throws
Exception
{
if(this.studenti[i].length()==0 ||
this.studenti[j].length()==0 )
throw new
Exception("Se compara cu sir null");
else
if(this.studenti[i].compareTo(this.stude
nti[j]) > 0)
{
String
copie=this.studenti[i];
this.studenti[i]=this.studenti[j];
this.studenti[j]=copie;
}
}
catch(Exception e)
{
if(this.studenti[i].length()>0)System.o
ut.println(this.studenti[i]);
}
}
}
/*7. Un dreptunghi este definit
de 2 puncte: coordonatele col?
ului din stnga, sus ?i cele ale
col?ului din dreapta, jos. *Clasa
dreptunghi implementeaza ?i o
metoda pentru calcularea ariei
sale. *Cititi de la tastatura
coordonatele unui dreptunghi ?i
verifica?i daca 10 dreptunghiuri
*generate aleator au macar
15% din arie n comun cu aria
dreptunghiului ini?ial. *Daca un
dreptunghi nu verifica aceasta
condi?ie se va declan?a
IllegalArgumentException ?i se
vor fi
*afi?ate coordonatele
dreptunghiul eronat.
Dreptunghiurile generate trebuie
plasate de la nceput doar
System.out.println(Dreptunghi.xinitial1
);
this.x1=this.rd.nextInt(Dreptunghi.xini
tial1)+this.generare150(Dreptunghi.xi
nitial1);
this.y1=this.rd.nextInt(Dreptunghi.yini
tial1)+this.generare150(Dreptunghi.yi
nitial1);
this.x2=this.rd.nextInt(Dreptunghi.xini
tial2)+this.generare150(Dreptunghi.xi
nitial2);
this.y2=this.rd.nextInt(Dreptunghi.yini
tial2)+this.generare150(Dreptunghi.yi
nitial2);
}
public float arie()
{
return Math.abs((this.x2this.x1)*(this.y1-this.y2));
}
public void citirecoordonate(){
try{
System.out.print("Colt
Stanga Sus x1:");
DataInputStream
data=new
DataInputStream(System.in);
Dreptunghi.xinitial1=Integer.parseInt(
data.readLine());
}catch(IOException ww){
System.out.print("Exceptie la citire");
}
try{
System.out.print("Colt
Stanga Sus y1:");
DataInputStream
data=new
DataInputStream(System.in);
Dreptunghi.yinitial1=Integer.parseInt(
data.readLine());
}catch(IOException ww){
System.out.print("Exceptie la citire");
}
try{
System.out.print("Colt
Stanga Sus x2:");
DataInputStream
data=new
DataInputStream(System.in);
Dreptunghi.xinitial2=Integer.parseInt(
data.readLine());
}catch(IOException ww){
System.out.print("Exceptie la citire");
}
try{
System.out.print("Colt
Stanga Sus y2:");
DataInputStream
data=new
DataInputStream(System.in);
Dreptunghi.yinitial2=Integer.parseInt(
data.readLine());
}catch(IOException ww){
System.out.print("Exceptie la citire");
}
}
}
Tema 7
1. Scrieti un applet Java care
preia 4 parametri (int, float)
din fisierul HTML atasat.
Folositi acesti parametri pentrr
a desena un dreptunghi rotunjit
umplut cu o anumita culoare
(verde, albastru, etc.). Definiti
culoarea conturului si culoarea
de umplere folosind
componentele RGB.
import java.applet.*;
import java.awt.*;
import java.lang.*;
public class RoundRectangle
extends Applet
{int x,y,w,h;
public void init()
{x=Integer.parseInt(getParameter("x")
);
y=Integer.parseInt(getParameter("y"));
w=Integer.parseInt(getParameter("w")
);
h=Integer.parseInt(getParameter("h"))
;}
public void paint(Graphics g)
{Color c=new Color(190,30,70);
g.setColor(c);
g.fillRoundRect(x,y,w,h,10,10);}
}
2. Scrieti un program Java
(appletcation) care, in cazul in
care este rulat ca aplicatie
independenta, citeste un sir de
caractere de la tastatura si
inlocuieste primul si ultimul
caracter cu '*'. Daca este rulat
ca applet, programul afiseaza
un mesaj.
import java.applet.*;
import java.awt.*;
import java.io.*;
public class Appletcation
extends Applet {
public void paint(Graphics g)
{g.drawString("mesaj...",25,25);}
public static void main(String[] args)
{String s=new String();
DataInputStream in=new
DataInputStream(System.in);
System.out.println("Introduceti sirul
de caractere: ");
try{s=in.readLine();
}
catch(IOException e){}
String a="*";
System.out.println("Noul sir este: ");
System.out.println(a+s.substring(1,s.l
ength()-1)+a);
}
}
3. Scrieti un applet Java care
afiseaza pe ecran o imagine (se
folosesc metodele getImage() si
drawImage()). Completati
fisierul sursa cu liniile de cod
care redau o secventa sonora
(getAudioClip()).
import java.applet.*;
import java.awt.*;
public class image extends
Applet {
Image img;
AudioClip aud;
public void init()
{img=getImage(getCodeBase(),"winte
r.gif");
aud=getAudioClip(getCodeBase(),"lala
.au");
}
public void paint(Graphics g)
{g.drawImage(img,0,0,this);
aud.loop();}
}
4. Scrieti un applet Java care
preia din fisierul HTML un
numar intreg numit n. Aplicatia
deseneaza o tabla de joc cu
nxn patrate colorate alternativ
in doua culori preluate tot ca
intreg din fisierul HTML
import java . awt .*;
import java.applet.Applet;
public class p4 extends Applet{
int n,r,v,b;
String s;
public void start()
{s=getParameter("n");
n=Integer.parseInt(s);
s=getParameter("r");
r=Integer.parseInt(s);
s=getParameter("v");
v=Integer.parseInt(s);
s=getParameter("b");
b=Integer.parseInt(s);
}
public void paint(Graphics g)
{
Color col1=new
Color(r,v,b);
Color col2=new
Color(22,100,50);
int i,j;
for( i=0;i<n;i++)
for(j=0;j<n;j++)
if(i%2==0)
if(j%2==0)
{g.setColor(col1);
g.fillRect(i*10,j*10,10,10);
}
else
{g.setColor(col2);
g.fillRect(i*10,j*10,10,10);
}
else
if(j%2==0)
{g.setColor(col2);
g.fillRect(i*10,j*10,10,10);
}
else
{g.setColor(col1);
g.fillRect(i*10,j*10,10,10);
}
}
}
5. Scrieti un applet Java care
deseneaza o banda colorata in
toate culorile posibile. Banda
incepe de la culoarea rosie iar
tranzitiile dintre culori trebuie
facute lin. Aplicatia deseneaza
(redeseneaza) banda pe masura
ce culorile sunt generate.
import java . awt .*;
import java.applet.Applet;
public class rainbow extends
Applet
{int i,x;
public void paint(Graphics g)
{
for(i=0;i<256;i++)
{
Color col =new Color(255,i,0);
g.setColor(col);
g.fillRect(i,0,1,10);
}
for(i=255;i>=0;i--)
{Color col1 =new Color(i,255,0);
g.setColor(col1);
g.fillRect((511-i),0,1,10);
}
for(i=0;i<256;i++)
{Color col =new Color(0,255,i);
g.setColor(col);
g.fillRect((512+i),0,1,10);
}
for(i=255;i>=0;i--)
{Color col1 =new Color(0,i,255);
g.setColor(col1);
g.fillRect((1023-i),0,1,10);
}
for(i=0;i<256;i++)
{Color col =new
Color(i,0,255);
g.setColor(col);
g.fillRect((1024+i),0,1,10);
}
}
}
6. Realiza?i un appletcation
care, atunci cnd este rulat ca
aplica?ie va afi?a mesajul:
Ruleaza-m ca applet. Cnd
este rulat ca applet va citi ca
parametru HTML raza unui cerc.
Desena?i un ptrat ?i un
triunghi nscrise n
interiorulacestui cerc.
import java.applet.*;
import java.awt.*;
public class cerc extends
Applet{
int r;
public static void main(String[]
args)
{System.out.println("Ruleaza-ma
ca Applet.");}
public void init()
{r=Integer.parseInt(getParameter("r"))
;
}
public void paint(Graphics g)
{g.drawOval(0,0,r,r);
g.drawRect(29,29,140,140);
int[] x={13,100,187};
int[] y={150,0,150};
int n=3;
g.drawPolygon(x,y,n);}
}
7. Desena?i primele n poligoane
care au numrul de diagonale
cel pu?in de x ori mai mare
dect numrul de laturi. n ?i x
sunt citi?i ca parametrii din
pagina HTML. Poligoanele sunt
umplute cu culori aleatorii.
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Polygon;
import
java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class pol extends JPanel
{
public void
paintComponent(Graphics g) {
super.paintComponent(g);
int n=5;
int x=2;
int j=5;
int k=1;
while(n>0){
if((j-3)/2>=x)
{ Polygon p = new
Polygon();
for (int i = 0; i < j; i++)
p.addPoint((int) (k*100+ 50 *
Math.cos(i * 2 * Math.PI / j)),
(int) (100 + 50 *
Math.sin(i * 2 * Math.PI / j)));
Color c=new Color(j*12,j*2,0);
g.setColor(c);
g.fillPolygon(p);
k++;
j++;
n--;
}
else
{j++;}
}
}
public static void main(String[]
args) {
JFrame frame = new JFrame();
frame.setTitle("DrawPoly");
frame.setSize(350, 250);
frame.addWindowListener(new
WindowAdapter() {
public void
windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane =
frame.getContentPane();
contentPane.add(new pol());
frame.show();
}
}
Tema8
1. Scrieti un applet Java care
are 3 componente de tip
Checkbox si un buton la
apasarea caruia se afiseaza,
prin intermediul unei
component de tip Label, un
text care contine o informare
asupra selectiei facute.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class CheckboxTest
extends Applet {
Button btnchoice;
Checkbox chk1;
Checkbox chk2;
Checkbox chk3;
Label selection;
public void init(){
btnchoice=new Button
("Alege");
add(btnchoice);
chk1=new Checkbox ("Suc
de mere");
chk2=new Checkbox
("Ceai");
chk3=new Checkbox
("Cafea");
selection= new Label("Ati ales:
");
add(chk1);
add(chk2);
add(chk3);
add(selection);
}
public boolean action (Event
evt, Object arg){
String sel=new String("Ati
ales: ");
if(evt.target==btnchoice){
if(chk1.getState())
sel+=chk1.getLabel()+'*';
if(chk2.getState())
sel+=chk2.getLabel()+'*';
if(chk3.getState())
sel+=chk3.getLabel()+'*';
}
selection.setText(sel);
return true;
}
}
2. Scrieti un applet Java care
contine 2 componente de tip
TextField, o componenta de tip
TextArea si 4 butoane cu
etichetele "+", "-", "*" si "/". La
apasarea unui buton se
calculeaza rezultatul operatiei
aritmetice corespunzatoare,
efectuate intre numerele scrise
in cele 2 componente de tip
TextField. Rezultatul se adauga,
pe un rand nou, la sfarsitul
textului deja existent in
componenta de tip TextArea.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends
Applet{
Button btnplus;
Button btnminus;
Button btndivide;
Button btnmultiply;
TextField txt1;
TextField txt2;
TextArea txt3;
Double a;
Double b;
public void init(){
btnplus= new Button("+");
btnminus= new
Button("-");
btndivide= new
Button("/");
btnmultiply= new
Button("*");
txt1= new TextField(5);
txt2= new TextField(5);
txt3= new TextArea(8,10);
add(txt1);
add(btnplus);
add(btnminus);
add(btndivide);
add(btnmultiply);
add(txt2);
add(txt3);
}
public boolean action (Event
evt, Object arg){
a=Double.parseDouble(txt1.getText());
if(btncolor.getLabel().equals("rosu")){
b=Double.parseDouble(txt2.getText());
if(evt.target==btnplus)
txt3.append(Double.toString(a+b)
+"\n");
if(evt.target==btnminus)
txt3.append(Double.toString(a-b)
+"\n");
if(evt.target==btnmultiply)
txt3.append(Double.toString(a*b)
+"\n");
if(evt.target==btndivide)
txt3.append(Double.toString(a/b)
+"\n");
return true;
}
}
3. Scrieti un applet Java care
care deseneaza la pozitia
(100,100) un dreptunghi verde
cu laturile de 100 si 50. La
apasarea unui buton cu
eticheta "Rosu",dreptunghiul
este redesenat cu noua culoare
btncolor.setLabel("verde");
}
else{
btncolor.setLabel("rosu");
repaint();
}
}
public void paint(Graphics g){
if(btncolor.getLabel().equals("rosu"))
g.setColor(Color.GREEN);
else
g.setColor(Color.RED);
g.drawRect(x, y, w, h);
}
}
4. Scrieti un applet Java care
detecteaza click-ul butonului
stanga al mouse-ului si
deseneaza la pozitia respectiva
un dreptunghi plin. Culoarea
dreptunghiului este schimbata la
fiecare click, fiind generata
aleator.
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import
java.awt.event.MouseMotionListener;
import java.applet.*;
public class P4 extends Applet
implements MouseListener,
MouseMotionListener{
int mouseX=0,mouseY=0;
public void init(){
addMouseListener(this);
addMouseMotionListener(this);
}
public void
mousePressed(MouseEvent me){
mouseX=me.getX();
mouseY=me.getY();
repaint();
}
public void paint(Graphics g){
int R=(int) (Math.random()
* 255 );
int G=(int) (Math.random()
* 255 );
int B=(int) (Math.random()
* 255 );
Color myColor=new
Color(R,G,B);
g.setColor(myColor);
g.fillRect(
mouseX,
mouseY,40,40);
}
public void
mouseDragged(MouseEvent e) {}
public void
mouseMoved(MouseEvent e) {}
public void
mouseClicked(MouseEvent e) {}
public void
mouseEntered(MouseEvent e) {}
public void
mouseExited(MouseEvent e) {}
public void
mouseReleased(MouseEvent e) {}
}
5. Scrieti un applet Java care
deseneaza pe ecran o tabla de
joc (problema 4 din lab. 7).
if (!inRect[i][j] &&
rectangles[i][j].inside(x, y))
{
inRect[i][j] =
true;
change = true;
}
if (inRect[i][j]&& !
rectangles[i][j].inside(x, y))
{
inRect[i][j] =
false;
change = true;
}
}
if (change)
repaint();
return true;
}
public void paint(Graphics
g){
for (int i = 0; i < n;
i++)
for (int j = 0; j <
n; j++)
{
if (inRect[i][j]
== true){
g.setColor(Color.red);
g.fillRect(rectangles[i][j].x,
rectangles[i][j] .y,
rectangles[i][j] .width, rectangles[i][j]
.height);
}
else{
if(((i+j)
%2==1))
g.setColor(Color.BLACK);
else
g.setColor(Color.YELLOW);
g.fillRect(rectangles[i][j] .x,
rectangles[i][j] .y,
for(int
i=0;i<n-
do{
1;i++)
ok=true;
for(int i=0;i<n-
for(int
j=0;j<n-i-1;j++)
1;i++)
{
if(
vector[j+1]
<
vector[j]
if( vector[i]
{
> vector[i+1] )
aux=vector[j];
vector[j]=vector[j+1];
{
ok=false;
vector[j+1]=aux;
aux=vector[i];
ok
true;
}
}
System.out.print("Sirul
ordonat este: ");
for(int i=0;i<n;i++)
{
System.out.print(vector[i]+" ");
}
}
}
//CCJ
import java.util.*;
import java.io.Console;
import java.io.DataInputStream;
import java.lang.System;
import java.io.IOException;
import ccj.Console;
class BubbleSortAlgCCJ {
public static void
main(String args[]) throws
IOException
{
boolean ok;
int n,aux;
int vector[]=new
int[10];
System.out.print("Dati numarul
de elemente n=");
n=Console.in.readInt();
System.out.print("Dati
elementele: ");
for(int i=0;i<n;i++)
{
vector[i]=Console.in.readInt();
}
vector[i]=vector[i+1];
vector[i+1]=aux;
}
}
}
while(!ok);
System.out.print("Sirul
oradonat crescator este: ");
for(int i=0;i<n;i+
+)
System.out.println(vector[i]+" ");
}
}
//BufferedReader
import java.io.*;
import java.lang.System;
public class
BubbleSortAlgBufferReader
{
public static void
main(String args[]) throws
IOException
{
BufferedReader
scanner=new BufferedReader(new
InputStreamReader(System.in));
String str=null;
int n,aux;
int vector[]=new int[10];
System.out.print("Dati
numarul de elemente n:");
str=scanner.readLine();
n=Integer.parseInt(str);
//Citirea sirului
for(int i=0;i<n;i++)
{
System.out.print("Elem["+i+"]:");
str=scanner.readLine();
vector[i]=Integer.parseInt(str);
}
//BubbleSort
boolean ok = true;
while (ok)
{
ok = false;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i1;j++)
if(
vector[j+1]
<
vector[j]
{
aux=vector[j];
vector[j]=vector[j+1];
vector[j+1]=aux;
ok
true;
}
}
System.out.print("Sirul ordonat
este: )
for(int i=0;i<n;i++)
{
System.out.print(vector[i]+" ");
}
}
}
/*2. Scrieti o aplicatie Java care
concateneaza datele angajatilor
unei firme considerand mai
multe departamente (Maxd departamente) avand nume de
tip String. Datele angajatilor
fiecarui departament sunt
stocate in fisiere distincte. Se
va genera o secventa cu toti
angajatii companiei
folosind clasa
SequenceInputStream.
Afisati angajatii din fiecare
departament in parte si apoi
angajatii care au salariul mai
StringTokenizer
stk=new StringTokenizer (text," ");
nume[i]=stk.nextToken();
prenume[i]=stk.nextToken();
salariu[i]=Integer.parseInt(stk.nextTok
en());
}
}
catch(IOException e)
{
System.exit(1);
}
System.out.println("Angajatii
departamentului "+name+" sunt:");
for(int i=0;i<3;i++)
{
System.out.println(nume[i]+"
"+prenume[i]);
}
System.out.println("Dati o
limita inferioara pt salariu:");
try
{
DataInputStream
data=new
DataInputStream(System.in);
lim=Integer.parseInt(data.readLine());
}
catch(IOException ww)
{
System.exit(1);
}
System.out.println("Angajatii
departamentului "+name+" care au
salariu mai mare decat "+lim+"
sunt:");
for(int i=0;i<3;i++)
{
if(salariu[i]>lim)
System.out.println(nume[i]+"
"+prenume[i]+" "+salariu[i]);
}
}
}
//*3. Realizati o aplicatie Java
care primeste de la intrarea
in
format: dd-MM-yyyy
author:subject.");
System.out.println("Data:"+zi+"-"+lun
a+"-"+an+" "+autor+":"+subiect);
System.out.println("Doriti sa mai
continuati?(Y/N)");
s=din.readLine();
s=s.toUpperCase();
if (s.charAt(0)=='N')
t=false;
else t=true;
}while(t==true);
}
}//class
/*4. Implementati aplicatia
anterioara folosind un fisier de
intrare care contine un anumit
numar de inregistrari cu
formatul specificat mai sus.*/
import java.io.*;
import java .util .* ;
import javax.swing.JOptionPane;
public class DayMonthYearFisier
{
public static void main(String
args[])
{
String auth,sub;
String d,m,y;
String text;
String yn = null;
try
{
//se creeaza stream
pt a citi din fiserul cu denumirea
specificata
FileInputStream
fstream = new
FileInputStream("problema4.txt");
DataInputStream in =
new DataInputStream(fstream);
BufferedReader br =
new BufferedReader(new
InputStreamReader(in));
text= br.readLine();//se
citeste prima linie din fisier
do
{
System.out.println("text= "+text);
StringTokenizer
stk=new StringTokenizer
(text,".");//se seteaza separatorul
//se preiau datele
separate de catre separatorul setat
anterior
d=stk.nextToken();
m=stk.nextToken();
y=stk.nextToken();
stk=new
StringTokenizer (text,"-");//se seteaza
separatorul
//se preiau datele
separate de catre separatorul setat
anterior
stk.nextToken();
auth=stk.nextToken();
sub=stk.nextToken();
//se afiseaza
datele in formatul cerut
JOptionPane.showMessageDialog(null,
d+"-"+m+"-"+y+" "+auth+":"+sub);
//se cere
confirmarea pt a continua cu
preluarea si afisarea datelor
yn=JOptionPane.showInputDialog("Dor
iti sa continuati? (Y/N)");
}
while((yn.equalsIgnoreCase("Y"))&&(te
xt = br.readLine()) != null) ;
}
catch(IOException e)
{
System.exit(1);
}
}
}
/*5. Creati un fisier de tip CSV
care contine pe linii distincte
urmatoarele informatii, separate
prin caracterul #:
- nume student
- an
- nota_1
- ...
- nota_5
Cititi informatia din fisier si
apoi afisati toate datele
studentilor care au media mai
mare ca 8.Obs.: lista de
studenti trebuie ordonata
alfabetic.*/
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
public class Studenti
@SuppressWarnings("deprecation")
public static void main(String[] args)
throws IOException {
String fName =
"C:\\Java\\Workspace\\Lab10\\Prob5\\da
te.csv";
String thisLine;
int i = 0;
float media;
FileInputStream fis = new
FileInputStream(fName);
DataInputStream myInput
= new DataInputStream(fis);
while ((thisLine =
myInput.readLine()) != null)
{
String strar[] =
thisLine.split("#");
for(int j=0;j<strar.length;j+
+)
{
media
=((Float.parseFloat(strar[2])
+Float.parseFloat(strar[3])
+Float.parseFloat(strar[4])
+Float.parseFloat(strar[5])
+Float.parseFloat(strar[6]))/5);
if(i==0){
if(j==0 &&
media>=8)
{
String[] names =
{strar[j]};
Arrays.sort(names);
System.out.print("Studentul:
Image image;
public ImageProcessing() {
image =
Toolkit.getDefaultToolkit().getImage("C
:\\Java\\Workspace\Lab10Pb7\\Poza.jpg
");
}
static String[] filterNames =
new String[] { "Original","Blur",
"Sharpen", "Edge Detect"};
static BufferedImageOp[] filters
= new BufferedImageOp[] {
null,
new ConvolveOp(new Kernel(3,
3, new float[] { 1f, 2f, 1f, 2f, 4f,
2f, 1f, 2f, 1f})),
new ConvolveOp(new Kernel(3,
3, new float[] { -1f, -1f, -1f, -1f,
9f, -1f, -1f, -1f, -1f })),
new ConvolveOp(new Kernel(3,
3, new float[] {-1f, -1f, -1f, -1f, 8f,
-1f, -1f, -1f, -1f}))};
public void paint(Graphics g1)
{
Graphics2D g =
(Graphics2D) g1;
BufferedImage bimage =
new
BufferedImage(image.getWidth(this),
image.getHeight(this),
BufferedImage.TYPE_INT_RGB);
Graphics2D ig =
bimage.createGraphics();
ig.drawImage(image, 0, 0,
this);
g.setFont(new
Font("SansSerif", Font.BOLD, 12));
g.setColor(Color.red);
g.translate(10, 10);
for (int i = 0; i <
filters.length; i++) {
if (filters[i] == null)
g.drawImage(bimage, 0, 0, this);
else
g.drawImage(filters[i].filter(bimage,
null), 0, 0, this);
g.drawString(filterNames[i], 0, 205);
g.translate(137, 0);
}
}
public static void main(String[]
a) {
JFrame f = new JFrame();
f.addWindowListener(new
WindowAdapter() {
public void
windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setContentPane(new
ImageProcessing());
f.pack();
f.setVisible(true);
}
}
Tema 11
DatagramPacket pp=new
DatagramPacket(buffer,buffer.length,InetAddres
s.getByName("127.0.0.1"),1234);
socket.receive(pp);
System.out.println("Client:Am primit
mesajul: "+new String(buffer));
}
catch(SocketException e){}
catch(UnknownHostException er){}
catch(IOException ioe){}
}
}
import java.io.*;
import java.net.*;
public class UDPServer {
public static void main(String[] args)
{try{
DatagramSocket socket=new
DatagramSocket(1234);
System.out.println("Socket
initializat.server");
byte[] buff=new byte[256];
DatagramPacket mp=new
DatagramPacket(buff,buff.length);
socket.setSoTimeout(25000);
socket.receive(mp);
String nume="anca";
String mesaj=new String(buff);
System.out.println("Server: Am primit mesajul:
"+mesaj);
if(mesaj.contentEquals(nume))
{String toSend="Buna!";
byte[] buffer=toSend.getBytes();
DatagramPacket mt = new
DatagramPacket(buffer, buffer.length,
mp.getAddress(), mp.getPort());
socket.send(mt);
}
else
{String toSend="Neautorizat";
byte[] buffer=toSend.getBytes();
DatagramPacket mt = new
DatagramPacket(buffer, buffer.length,
mp.getAddress(), mp.getPort());
socket.send(mt);
}
}
catch(SocketException e){}
catch(IOException ioe){}
}
}
DatagramPacket cerere=new
DatagramPacket(buff,buff.length);
socket.receive(cerere);
String cale=new String(buff);
String path=root+cale;
System.out.println("calea este:
"+path);
File f=new File(path);
FileInputStream trimite=new
FileInputStream(f);
byte[] fisier=new
byte[(int)f.length()];
trimite.read(fisier);
InetAddress
adresa=InetAddress.getLocalHost();
DatagramPacket raspuns=new
DatagramPacket(fisier,fisier.length,adresa,2006)
socket.send(raspuns);
socket.close();
trimite.close();
}
catch(SocketException e){}
catch(IOException ioe){}
}
}
4. Sa se realizeze o aplicatie Java distribuita
folosind o conexiune cu confirmare (TCP/IP)
care reprezinta un server de raspuns
automat. La receptia mesajului
"/getProperties" serverul trimite un raspuns
clientului continand proprietatile
sistemului, la receptia mesajului "/getTime"
serverul raspunde cu un mesaj continand ora
serverului. Conexiunea este
inchisa de aparitia mesajului "#exit".
(Serverul transmite ca String datele folosind
metodele System.getProperties().toString()
si new Date().toString())
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
//portul folosit pentru conexiune
public int port = 1234;
//hostul destinatie
private String destinatie;
//socketul client
private Socket client;
//stream-uri pentru comunicarea cu
serverul
private BufferedReader fromServer;
private PrintStream toServer;
/**
* Seteaza hostul destinatie.
* @param destinatie numele hostului.
*/
public void setHostName(String destinatie){
this.destinatie = destinatie;
}
/**
* Initializeaza aplicatia client si se conecteaza la
server.
*/
public void conecteaza_te(){
if(destinatie == null){
System.out.println("Hostul destinatie nu este
specificat !");
return;
}
try {
System.out.println("Incerc conexiunea la
server...");
//initializeaza clientul
client = new Socket(destinatie, port);
System.out.println("M-am conectat la serverul :
" + destinatie);
//creez stream-urile pentru scriere/citire mesaje
fromServer = new BufferedReader(new
InputStreamReader(client.getInputStream()));
toServer = new
PrintStream(client.getOutputStream());
} catch (UnknownHostException e) {
System.out.println("Host necunoscut !");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Conectiunea nu poate fi
realizata !");
e.printStackTrace();
}
}
/**
* Trimite un mesaj la Server.
* @param mesaj mesajul de trimis la server.
*/
public void trimiteMesaj(String mesaj){
if(toServer == null){
System.out.println("Conexiune cu serverul
indisponibila !");
return;
}
//scrie mesajul
toServer.println(mesaj);
}
/**
* Asculta, citeste si afiseaza mesajul de la
server.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromServer == null){
String msg="Conexiune cu serverul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromServer.readLine();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la server!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu serverul.
*/
public void inchideConexiunea(){
try {
client.close();
fromServer.close();
toServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class ClientStarter {
public static void main(String[] args) {
String mes=new String();
int nr;
//creez aplicatia client
TCPClient client = new TCPClient();
//seteaza hostul destinatie
client.setHostName("localhost");
//realizeaza conexiunea la server
client.conecteaza_te();
String mesaj1="getProperties";
String mesaj2="getTime";
String mesaj3="exit";
client.trimiteMesaj(mesaj1);
mes=client.citesteMesaj();
System.out.println("Mesajul receptionat este:
"+mes);
client.trimiteMesaj(mesaj2);
mes=client.citesteMesaj();
System.out.println("Mesajul receptionat este:
"+mes);
client.trimiteMesaj(mesaj3);
//inchid conexiunea cu serverul
client.inchideConexiunea();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Date;
/**
* Exemplu de aplicatie distribuita care foloseste
o conexiune tcp/ip
* pentru schimbul de mesaje de tip String.
* * Clasa implementeaza aplicatia server, care
permite
* conectarea si schimbul de mesaje cu
aplicatiile client.
* * @author Calin-Gligor Loghin
*/
public class TCPServer {
//portul folosit pentru conexiune
public int port = 1234;
//socketul server
private ServerSocket server;
//socketul client
private Socket client;
//stream-uri pentru comunicarea cu clientul
private BufferedReader fromClient;
private PrintStream toClient;
//**
* Creeaza serverul si asculta cererile pentru
conexiune ale clientilor.
*/
public void startServer(){
System.out.println("Initializez aplicatia
server ...");
try {
//initializeaza serverul
server = new ServerSocket(port);
System.out.println("Ascult pentru conexiunea
clientului ...");
//asculta pentru conexiunile clientilor
client = server.accept();
System.out.println("Clientul " +
client.getInetAddress().getHostName() + "
conectat !");
//creez stream-urile pentru scriere/citire mesaje
fromClient = new BufferedReader(new
InputStreamReader(client.getInputStream()));
toClient = new
PrintStream(client.getOutputStream());
} catch (IOException e) {
System.out.println("Serverul nu a putut fi
creat !");
e.printStackTrace();
}
}
//**
* Trimite un mesaj la client.
* @param mesaj mesajul de trimis la client. */
public void trimiteMesaj(String mesaj){
if(toClient == null){
System.out.println("Conexiune cu clientul
indisponibila !");
return;
}
//scrie mesajul
toClient.println(mesaj);
}
/**
* Asculta, citeste si afiseaza mesajul de la
client.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromClient == null){
String msg="Conexiune cu clientul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromClient.readLine();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la client!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu clientul.
*/
public void inchideConexiunea(){
try {
client.close();
server.close();
fromClient.close();
toClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Date;
public class ServerStarter {
public static void main(String[] args) {
//intializez serverul
TCPServer server = new TCPServer();
//pornesc serverul
server.startServer();
//citesc mesaj de la clientul conectat
String mesaj1 = new String();
String crtMsg=new String();
mesaj1=server.citesteMesaj();
if(mesaj1.compareTo("getProperties")==0)
{crtMsg=System.getProperties().toString();
server.trimiteMesaj(crtMsg);}
mesaj1=server.citesteMesaj();
if(mesaj1.compareTo("getTime")==0)
{crtMsg=new Date(0).toString();
server.trimiteMesaj(crtMsg);}
//inchid conexiunea cu clientul
server.inchideConexiunea();
}
}
5. Sa se implementeze o aplicatie distribuita
care permite trimiterea catre server a unui
nume de director/fisier sau a comenzii
#exit pentru inchiderea conexiunii. Daca
directorul cerut exista, serverul trimite
clientului continutul acestuia. Daca locatia
System.out.println("Clientul " +
client.getInetAddress().getHostName() + "
conectat !");
//creez stream-urile pentru scriere/citire mesaje
fromClient = new BufferedReader(new
InputStreamReader(client.getInputStream()));
toClient = new
PrintStream(client.getOutputStream());
} catch (IOException e) {
System.out.println("Serverul nu a putut fi
creat !");
e.printStackTrace();
}
}
/**
* Trimite un mesaj la client.
* @param mesaj mesajul de trimis la client.
*/
public void trimiteMesaj(String mesaj){
if(toClient == null){
System.out.println("Conexiune cu clientul
indisponibila !");
return;
}
//scrie mesajul
toClient.println(mesaj);
}
public void trimiteMesaj(long mesaj){
if(toClient == null){
System.out.println("Conexiune cu clientul
indisponibila !");
return;
}
//scrie mesajul
toClient.println(mesaj);
}
/**
* Asculta, citeste si afiseaza mesajul de la
client.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromClient == null){
String msg="Conexiune cu clientul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromClient.readLine();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la client!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu clientul.
*/
public void inchideConexiunea(){
try {
client.close();
server.close();
fromClient.close();
toClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Date;
server.startServer();
//citesc mesaj de la clientul conectat
String mesaj1 = new String();
mesaj1=server.citesteMesaj();
boolean exists = (new File(mesaj1)).exists();
if (exists) { server.trimiteMesaj("Directorul
exista.");
File dir=new File(mesaj1);
File[] files = dir.listFiles();
server.trimiteMesaj(files[0].getName());
server.trimiteMesaj(files[1].getName());
server.trimiteMesaj(files[2].getName());
}
else { System.out.println("Directorul nu
exista.");
}
mesaj1=server.citesteMesaj();
File fis=new File(mesaj1);
long l=fis.length();
server.trimiteMesaj(l);
//inchid conexiunea cu clientul
server.inchideConexiunea();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
//intializez serverul
TCPServer server = new TCPServer();
/**
* Exemplu de aplicatie distribuita care foloseste
o conexiune tcp/ip
* pentru schimbul de mesaje de tip String.
*
* Clasa implementeaza aplicatia client, care
permite
* conectarea si schimbul de mesaje cu aplicatia
server.
*
* @author Calin-Gligor Loghin
*
*/
public class TCPClient {
//pornesc serverul
//initializeaza clientul
client = new Socket(destinatie, port);
/**
* Asculta, citeste si afiseaza mesajul de la
server.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromServer == null){
String msg="Conexiune cu serverul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromServer.readLine();
} catch (IOException e) {
System.out.println("Incerc conexiunea la
server...");
} catch (UnknownHostException e) {
}
public long citesteMesajL(){
long mesaj=0;
if(fromServer == null){
String msg="Conexiune cu serverul
indisponibila !";
return mesaj;
}
try {
//citeste mesaj
mesaj = fromServer.read();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la server!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu serverul.
*/
public void inchideConexiunea(){
try {
client.close();
fromServer.close();
toServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* Exemplu de utilizare a aplicatiei client.
*
* @author Calin-Gligor Loghin
*
*/
public class ClientStarter {
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Exemplu de aplicatie distribuita care foloseste
o conexiune tcp/ip
* pentru schimbul de mesaje de tip String.
*
* Clasa implementeaza aplicatia server, care
permite
* conectarea si schimbul de mesaje cu
aplicatiile client.
*
* @author Calin-Gligor Loghin
*/
public class TCPServer {
//portul folosit pentru conexiune
public int port = 1234;
//socketul server
private ServerSocket server;
//socketul client
private Socket client;
System.out.println("Clientul " +
client.getInetAddress().getHostName() + "
conectat !");
//creez stream-urile pentru scriere/citire mesaje
fromClient = new BufferedReader(new
InputStreamReader(client.getInputStream()));
toClient = new
PrintStream(client.getOutputStream());
} catch (IOException e) {
System.out.println("Serverul nu a putut fi
creat !");
e.printStackTrace();
}
}
/**
* Trimite un mesaj la client.
* @param mesaj mesajul de trimis la client.
*/
public void trimiteMesaj(int mesaj){
if(toClient == null){
System.out.println("Conexiune cu clientul
indisponibila !");
return;
}
/**
* Creeaza serverul si asculta cererile pentru
conexiune ale clientilor.
*/
public void startServer(){
//scrie mesajul
toClient.println(mesaj);
}
System.out.println("Initializez aplicatia
server ...");
try {
//initializeaza serverul
server = new ServerSocket(port);
System.out.println("Ascult pentru conexiunea
clientului ...");
//asculta pentru conexiunile clientilor
client = server.accept();
/**
* Asculta, citeste si afiseaza mesajul de la
client.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromClient == null){
String msg="Conexiune cu clientul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromClient.readLine();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la client!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu clientul.
*/
public void inchideConexiunea(){
try {
client.close();
server.close();
fromClient.close();
toClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Exemplu de utilizare a aplicatiei server.
* @author Calin-Gligor Loghin
*/
import java.util.Random;
public class ServerStarter {
public static void main(String[] args) {
Random r=new Random();
int nr;
//intializez serverul
TCPServer server = new TCPServer();
//pornesc serverul
server.startServer();
//citesc mesaj de la clientul conectat
String mesaj1 = new String();
mesaj1=server.citesteMesaj();
while(mesaj1!=null)
{
if(mesaj1.equals("nr"))
{ nr=r.nextInt(20);
server.trimiteMesaj(nr);}
else
server.inchideConexiunea();
mesaj1=server.citesteMesaj();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* Exemplu de aplicatie distribuita care foloseste
o conexiune tcp/ip
* pentru schimbul de mesaje de tip String.
* Clasa implementeaza aplicatia client, care
permite
* conectarea si schimbul de mesaje cu aplicatia
server.
* @author Calin-Gligor Loghin
*/
public class TCPClient {
//portul folosit pentru conexiune
public int port = 1234;
//hostul destinatie
private String destinatie;
//socketul client
private Socket client;
//stream-uri pentru comunicarea cu
serverul
private BufferedReader fromServer;
private PrintStream toServer;
/**
* Seteaza hostul destinatie.
* @param destinatie numele hostului.
*/
public void setHostName(String destinatie){
this.destinatie = destinatie;
}
/**
* Initializeaza aplicatia client si se conecteaza la
server.
*/
public void conecteaza_te(){
if(destinatie == null){
System.out.println("Hostul destinatie nu este
specificat !");
return;
}
try {
System.out.println("Incerc conexiunea la
server...");
//initializeaza clientul
client = new Socket(destinatie, port);
System.out.println("M-am conectat la serverul :
" + destinatie);
//creez stream-urile pentru scriere/citire mesaje
fromServer = new BufferedReader(new
InputStreamReader(client.getInputStream()));
toServer = new
PrintStream(client.getOutputStream());
} catch (UnknownHostException e) {
System.out.println("Host necunoscut !");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Conectiunea nu poate fi
realizata !");
e.printStackTrace();
}
}
/**
* Trimite un mesaj la Server.
* @param mesaj mesajul de trimis la server.
*/
public void trimiteMesaj(String mesaj){
if(toServer == null){
System.out.println("Conexiune cu serverul
indisponibila !");
return;
}
//scrie mesajul
toServer.println(mesaj);
}
/**
* Asculta, citeste si afiseaza mesajul de la
server.
*/
public String citesteMesaj(){
String mesaj=new String();
if(fromServer == null){
String msg="Conexiune cu serverul
indisponibila !";
return msg;
}
try {
//citeste mesaj
mesaj = fromServer.readLine();
} catch (IOException e) {
System.out.println("Nu am putut citi mesajul de
la server!");
e.printStackTrace();
}
return mesaj;
}
/**
* Inchide conexiunea cu serverul.
*/
public void inchideConexiunea(){
try {
client.close();
fromServer.close();
toServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* Exemplu de utilizare a aplicatiei client.
*
* @author Calin-Gligor Loghin
*
*/
public class ClientStarter {
public static void main(String[] args) {
int suma=0;
int prag= 30;
String mes=new String();
int nr;
//creez aplicatia client
TCPClient client = new TCPClient();
//seteaza hostul destinatie
client.setHostName("localhost");
//realizeaza conexiunea la server
client.conecteaza_te();
}
System.out.println("Suma citita este: "+suma);
//inchid conexiunea cu serverul
client.inchideConexiunea();
}
}