ej o edspace e di t qe me nje program te tille po ta perdorin bankat ne te vertete do te kishin humbje te medha
P.S. Per humor me shume se e di qe nuk do te perdoret ne banke tamam.
ej o edspace e di t qe me nje program te tille po ta perdorin bankat ne te vertete do te kishin humbje te medha
P.S. Per humor me shume se e di qe nuk do te perdoret ne banke tamam.
Edspace te falenderoj sinqerisht per ndihmen qe po me jep por ne programin e fundit ti e kishe bere shume te advancuar. Sipas detyres duhet vetem te bejme while loop dhe pa qene nevoja te perdoresh do while dhe private data members. Nqs ke kohe te lire ju lutem qe ta modifikosh vetem duke dhene nje zgjidhje te thjeshte programit si me poshte:
import java.util.Scanner;
public class banker {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
float balance, amount;
String transType;
System.out.print("What is the starting balance: ");
balance = scan.nextFloat();
System.out.print("Enter transaction: ");
transType = scan.next();
System.out.println("Begining balance: "+balance);
System.out.println("Transaction is: "+transType);
//while (
}
}
Shumë të thatë e paske humorin.Postuar më parë nga qoska
Nga nisesh qe thua do dalin bankat me humbje?
Në shikon ndonjë gabim në kod je i lutur ta korrigjosh. Unë kam vetëm pak javë që po programoj në Java dhe nuk e di mirë sintaksën. Gjatë programimit kam aplikuar më shumë njohuritë mbi C++, me mendimin se do punojnë edhe në Java.
Kodin e testova gjatë dhe nuk pashë ndonjë gabim. Për një detyrë shkolle e bën punën por megjithatë, më njofto nqs shikon ndonjë gabim.
-------------
Michigansi,
Duhet të jesh në gjëndje tani ta modifikosh kodin sipas dëshirës. Nuk ke për të mësuar gjë po ti shkruaj unë të gjitha programet. Prandaj po të përsëris edhe njëherë që ti mundohu ta shkruash vetë kodin në fillim dhe kur të hasësh probleme hidhe në forum.
Po të kem kohë mund të bëj diçka. Nuk të premtoj gjë.
Edi
mos e merr kaq personale se nuk e kisha per gabime ne kod. kodin nuk e kam lexuar fare pasi une se kam qejf javen(mgjthse di te programoj ne te) por pashe konvertimet qe beje nga float ne integer dhe nqs kete program do ta perdorje ne banke me verte dhe nqs ti do te kishe studiuar pak analize numerike(qe te meson te llogarisesh gabimet qe ben gjate veprimeve) do ta kuptoje se si rrumbullakimet e tua i cojen bankes tende dem me shume se 1 milion ne vit.
Per kete thashe ashtu atij cunit i duhet vetem per nje detyre kursi ne shkolle dhe nuk e di se nuk ben nje search dhe te gjej dicka te gatshme ta modifikoje sesa te lodhi te tjeret kot.
Qoska, bëj një kritikë për te qënë se nuk mjaftojnë dy rreshta komente që unë duhet të kisha studiuar analizë numerike për të kuptuar gabimet e konvertimit. Komente të tilla nuk më ndihmojnë mua që të mësoj Java nga ty që paske më shumë eksperiencë.
Ti që ke mësuar analizë numerike më sqaron dot problemin? Konvertimi nga float në integer punon pë mrekulli dhe nuk shoh të ketë asnjë gabim në konvertim përveç limiteve të vetë kompjuterit dhe Java që kam përmëndur më lart.
Ku është gabimi i konvertimit? Nga e nxjerr shifrën 1 milion? Si do ta shkruaje ti kodin që të mos ndodhte ky gabim dhe programi të përdorej në banka të vërteta?
Në je i zoti tu pergjigjesh atyre pyetjeve, atëherë mund të kemi një debat të dobishem në forum dhe të mësojmë diçka nga njëri tjetri. Ky është qëllimi i forumit të informatikës.
Edi
1. Ask for and read the customer BALANCE
2. Ask for and read TRANSACTION TYPE
3. While TRANSACTION TYPE is not EXIT do
Ask for and read Transaction AMOUNT
if TRANSACTION TYPE is DEPOSIT then
credit transaction AMOUNT to BALANCE
else if TRANSACTION TYPE is WITHDRAWAL then
if BALANCE can not cover transaction AMOUNT,
debit the customer $25.00 for insufficient funds
else
debit the customer for the transaction AMOUNT
endif
else
print a message saying "unidentified transaction"
endif
Ask for and read the next TRANSACTION TYPE
Endwhile
Edspace keto jane regullat qe duhet te ndiqen pa qene nevoja per do while, for loop, ose private data members vetem while loop lejohet. Une i dhash disi nje zgjidhje por nuk me jepte rezultatet e sakta.
Kodi i saktë dhe më i mirë është ai që kam postuar më lart. Ai kod zbaton teoritë e ndërtimit të klasave, është i zgjerueshëm për projekte të tjera, është më i thjeshtë për të lexuar e kuptuar, si dhe llogjikisht më i saktë.
Megjithatë, mqns ti këmbëngul që programi të mos përdorë variabla private, funksione, dhe do-while, atëherë po e varfëroj kodin që ti përshtatet rregullave të tua.
Funksioni kryhet njësoj si në programin e parë.
Në lidhje me do-while, arsyeja pse e përdora është se do-while ekzekuton kodin brënda përsëritjes (loop) të paktën një herë dhe pastaj vendos nqs do ta pësërisë prapë apo jo. Në rastin tonë, kur hapet programi ne nuk kemi marrë ende komandë nga përdoruesi, prandaj duhet të ekzekutojmë kodin të paktën një herë dhe pastaj të vendosim nqs do përsërisim procesin duke tërhequr dhe depozituar, apo do dalim nga përsëritja. Pra nuk është nevoja të bëjmë krahasimin while(!finished) që me herën e parë qe ekzekutojmë kodin.
Duke përdorur një do-while kemi një krahasim më pak dhe teorikisht kodi duhet të jetë pak më i shpejtë. Shpejtësia që fitojmë nga ky ndryshim (do-while apo while) është shumë shumë i vogël por e shkruajta ashtu sepse është mirë që këto gjëra të të bëhen shprehi që në fillim. Kur shkruan kod, mos mendo vetëm si të arrish rezultatin përfundimtar, por edhe si të arrish atë rezultat me mënyrën më efektive duke marrë parasysh shpejtësinë, qartësinë e kodit, ripërdorimin në të ardhmen, etj.
Ja një shëmbull për të ilustruar ndryshimin midis do-while dhe while:
Në kodin më lart, fjala Forumi do shfaqet në ekran ndërsa fjala Shqiptar NUK do shfaqet. Që të dyja bëjnë vetëm një krahasim por do-while e bën në fund ndërsa while e bën që në fillim.Kodi PHP:
boolean kushti_i_perseritjes = false;
do{
System.out.print("Forumi"); //bëj
}while( kushti_i_perseritjes ); //kontrollo
while( kushti_i_perseritjes ){ //kontrollo
System.out.print("Shqiptar"); //pastaj bëj
}
Në të gjitha librat dhe klasat e kompjuterit që të dyja format mësohen në të njëjtën kohë. Të njëjtën gjë duhet të bëjë edhe profesori yt dhe nuk duhet të të këshillojë të përdorësh vetëm njërën.
Ja dhe kodi:
Kodi PHP:
import java.util.Scanner;
public class Banker {
public static void main(String[] args) {
int balance = 0; //balanca qe gjendet ne banke
int deposit_total = 0; //shuma totale e depozitave
int withdraw_total = 0; //shuma totale e terheqjeve
int deposit_num = 0; //numri i depozitave te bera
int withdraw_num = 0; //numri i terheqjeve te bera
int transaction = 0; //shuma e depozituar ose terhequr
boolean finished = false;
Banker banker = new Banker();
Scanner scan = new Scanner(System.in);
String trans_type; //veprimi qe gjezh perdoruesi
//W per Withdraw, terheqje
//D per Deposit, depozite
//E per Exit, te mbylle programin
//Marrim shumen fillestare te llogarise
//E pyesim perdoruesin deri sa shuma te jete te pakten 1 qindarke
do{
System.out.print("What is the starting balance: $");
balance = (int)(scan.nextFloat() * 100);
}while(balance < 1);
while(!finished){
//Marrim veprimin qe do te kryej perdoruesi
System.out.print("Enter transaction (W/D/E): ");
trans_type = scan.next();
if(trans_type.equals("W") || trans_type.equals("D")){
// E pyesim perdoruesin per shumen e veprimit
// deri sa te shkruaj nje shume pozitive
do{
System.out.print("Enter Trans. Amt: $");
transaction = (int)(scan.nextFloat() * 100);
}while(transaction < 1);
if(trans_type.equals("D")){
//depozitojme parate ne llogari
//azhurnojme balancen
balance = balance + transaction;
deposit_total = deposit_total + transaction;
deposit_num = deposit_num + 1;
System.out.println("Balance after Deposit: $" + (float)(balance / 100.0));
}
else{
if( balance > transaction){
//terhiq parate, azhurno balancen
balance = balance - transaction;
withdraw_total = withdraw_total + transaction;
withdraw_num = withdraw_num + 1;
System.out.println("New Balance is $" + (float)(balance / 100.0));
}
else if( balance > 2500 ){
// nqs kerkon te terheqe me shume sec ka ne banke
// shikojme nqs ka me shume se 25 dollare dhe po te kete
// i japim 25 dollare
balance = balance - 2500;
withdraw_total = withdraw_total + 2500;
withdraw_num = withdraw_num + 1;
System.out.print("Insufficient fund. You have been debited $25.00.");
System.out.print(" New Balance is $" + (float)(balance / 100.0));
System.out.println();
}
else{
//ska para te mjaftueshme per terheqje
System.out.println("Insufficient funds.");
}
}
}
else if(trans_type.equals("E")){ //nqs perdoruesi mbaroi pune
finished = true;
//nxjerrim statistikat
//balanca fillestare
int starting_balance = balance - deposit_total + withdraw_total;
System.out.println("Your starting balance was $" + (float)(starting_balance / 100.0) );
System.out.println("You made " + withdraw_num + " withdrawals with a total of $" + (float)(withdraw_total / 100.0) );
System.out.println("You made " + deposit_num + " deposits with a total of $" + (float)(deposit_total / 100.0) );
System.out.println("Your new balance is $" + (float)(balance / 100.0) );
System.out.println("Goodbye!");
}
else{
// Perdoruesi shkruajti dicka ndryshe nga W, D, E
// prandaj i nxjerrim gabimin ne ekran
System.out.println("Unidentified transaction.");
System.out.println("[W]ithdraw");
System.out.println("[D]eposit");
System.out.println("[E]xit");
}
}
}
}
Edi
edi, mos te kisha lexuar titullin e temes do mendoja se ishte ne C kodi........
Besoj se deri tani ( deri kur ke filluar te merresh me java) kishe programuar ne gjuhe si C a C++, kuptohet...
nejse dhe une gati nje muaj kam qe po perdor java (client-server apps),dhe besoj se duhet pak per tu mesuar me paradigmen Object Oriented...
e ka ndo1 ebook te java network programming?????????
bye
The truth may be out there, but lies are inside your head.
Java network programming nga O'Reily.
Këtu ke shëmbujt që jepen në atë libër.
http://www.cafeaulait.org/books/jnp2...les/index.html
Librin e plotë mund ta marrësh me edonkey (rreth 3Mb)
Kliko këtu nqs e ke të instaluar:
ed2k://|file|Oreilly%20-%20Java%20Network%20Programming%202Ed.pdf|2640327| 2878C01D0FE2821D8F867E79EE3066AA|/
Kam lexuar nja dy libra për Java por nuk më pëlqen dhe aq. Më pëlqen që ka shumë klasa të gatshme dhe është portative për të gjithë sistemet operative por ka shumë rregulla për organizimin e objekteve.
Paradigmën e objekteve e kam ditur nga C++ dhe deri tani nuk shoh ndonjë avantazh të Java. Megjithatë s'kam bërë ndonjë program serioz deri tani që të shikoj të gjitha avantazhet.
Edi
Je punesuar nga nje kompani programimi ne Ny. Puna e pare jote eshte te shkruash nje program per sistemin e pageses se tyre. E zeme se c'do punetor ka nje karte dhe atje ka informacion per punetorin. Tani duhet te shkruajme nje program qe lexon inforacionin qe identifikon punetorin dhe priten cekun per c'do punetor qe i eshte lexuar informacioni. Perdorn emrin e nje punetori Done qe te behet exit programi. Duhet te perdoren while loop ose do while loop. Nuk duhen te perdoren private data members ose public thjesht nje programi i thjeshte.
You have just been hired by xyz corporation of New York as a programmer.
Your first assignment is to write a program for their payroll system. Given that
paychecks are computed from an employee time card, where an employee time card is
represented as a sequence of data items. Write a program that prompts for and reads
each employee's time card data and prints out the pay check for each time card read. Don't use private data members or public, just a simply program.
Use an employee first name of DONE as the sentinel for when the program is to stop.
Employee time cards have the following format:
Employee first name
A blank column
Employee last name
A blank column
Employee social security number e.g. 123456789
A blank column
the character 'c' for city office or 's' for suburban office
A blank column
the character 'u' for union or 'n' for non union member
number of regular hours (integer)
hourly pay rate (dollars . cents)
number of dependents (integer)
number of overtime hours (a float type number)
e.g. 123456789 c n 80 9.55 3 5.5
Your program should print the employees pay check showing the following values and
using the formula given below to compute each value:
- gross pay as (regular hours * rate) + (overtime hours * 1.5 * rate)
- federal tax as 0.14(gross - 13 * dependents)
- social security deduction as 0.052 * gross
- city tax as 4% of gross pay if employee works in the city, 0.0 if not
- union dues as 6.75% of gross pay if employee is in the union, 0.0 if not
- net pay as gross - fed tax - ssn deduction - city tax - union dues
print the pay check in this exact format/design. fill in the ___?__ information.
Kodi:******************************************************************************** ** xyz corporation date:03/27/89(Currnt date)** ** 999 john doe street ** ** manhattan, ny. 48197. ** ** ** ** Please pay name: ? ** ** Social security number: ? ** ** the amount of: ? dollars, and ? cents ** ** ** ** signed: ** ** xyz corp. president ** ** ** **------------------------------------------------------------------------------** ** ** ** regular pay: ? ** ** overtime pay: ? ** ** gross pay: ? ** ** federal tax: ? ** ** social sec. deduction: ? ** ** city tax: ? ** ** union dues: ? ** ** net pay: ? ** ** ** ********************************************************************************* use this sample data to test your program. John Doe 123456789 c U 80 8.00 0 20.5 Jim Kelly 123530000 S n 80 5.25 3 20.0 Ashley Simpson 200300400 C N 20 4.00 1 0.0 Larry Bird 300400500 s u 10 15.00 5 0.0 Mike Smith 400500600 s u 10 2.00 0 1.0 Done
Ndryshuar për herë të fundit nga edspace : 10-11-2004 më 02:34
hint:
int fname
while { !fname.equalsIgnorecase ("Done"){
read fname (the rest of information)
read.next()
compute and print check
read fname agais so if it's done to exit
}
o edspace shpresoj t'kesh kohe ti hedhesh nje sy se dhe dy assignments me kan mbetur edhe mbaroj simestrin flm
I hodha mëndjen, dy sy e dy duar për më shumë se dy orë.
Më duket se do ta kalosh klasën shkëlqyeshëm por nuk ke mesuar gjë.
Të kam thënë që duhet të mundohesh vetë, të hedhësh kodin tënd në forum, dhe pastaj të të ndihmoj unë e të tjerët.
Kodi është më poshtë. E programova në Shqip që të ndihmojë edhe të tjerët që nuk dinë anglisht.
Kujdes gjatë përkthimit që të mos prishësh gjë.
- data është në formën dita/muaji/viti
- ceku gjithashtu
- kartela perdor q per qytetin (city) dhe s për sindikaten (union)
- për të mbyllur programin përdoret "mbaro" dhe jo "done"
- mos harro te ndryshoh emrat e ndryshoreve (variablave)
- mos harro te heqesh komentet
E kam tepruar me komentet që të qartësohet funksioni i çdo rreshti.
Ja disa shëmbuj për kartelat e punëtorëve dhe çeqet që ka nxjerrë programi:
ndërprerja "******* ******" bëhet nga forumi. Në program nuk shfaqet.
emri: Forumi
mbiermi: Shqiptar
nr. sigurimeve: nr123456
punon në qytet?: q (dmth po)
merr pjesë në sindikatë?: s (dmth po)
oret e punës: 40
pagesa në orë: 15.5
persona të varur (femijet, gruaja): 0
oret mbi orarin: 0
emri: MiciKodi:Fut kartelat e punetoreve. Shkruaj "Mbaro" per te mbyllur programin. Forumi Shqiptar nr123456 q s 40 15.5 0 0 ******************************************************************************* ** xyz corporation data:10/11/04 ** ** 999 john doe street ** ** manhattan, ny. 48197. ** ** ** ** Paguaj per: Forumi Shqiptar ** ** Numri i Sigurimit: nr123456 ** ** Shumen: 434 dollare dhe 31 cent ** ** ** ** Firmosur:_____________________ ** ** xyz Corp. President ** ** ** **---------------------------------------------------------------------------** ** ** ** Orari i Rregullt: 620.00 ** ** Mbi Orarin: 0.00 ** ** Paga Gros: 620.00 ** ** Taksa Federale: 86.80 ** ** Sigrm. Shoqerore: 32.24 ** ** Taksa e Qytetit: 24.80 ** ** Sindikata: 41.85 ** ** Paga Neto: 434.31 ** ** ** *******************************************************************************
mbiermi: Gansi
nr. sigurimeve: nr55551549
punon në qytet?: j (dmth jo)
merr pjesë në sindikatë?: j (dmth jo)
oret e punës: 40
pagesa në orë: 15.5
persona të varur (femijet, gruaja): 3
oret mbi orarin: 0
emri: FilanKodi:Mici Gansi nr55551549 j j 40 15.5 3 0 ******************************************************************************* ** xyz corporation data:10/11/04 ** ** 999 john doe street ** ** manhattan, ny. 48197. ** ** ** ** Paguaj per: Mici Gansi ** ** Numri i Sigurimit: nr55551549 ** ** Shumen: 506 dollare dhe 42 cent ** ** ** ** Firmosur:_____________________ ** ** xyz Corp. President ** ** ** **---------------------------------------------------------------------------** ** ** ** Orari i Rregullt: 620.00 ** ** Mbi Orarin: 0.00 ** ** Paga Gros: 620.00 ** ** Taksa Federale: 81.34 ** ** Sigrm. Shoqerore: 32.24 ** ** Taksa e Qytetit: 0.00 ** ** Sindikata: 0.00 ** ** Paga Neto: 506.42 ** ** ** *******************************************************************************
mbiermi: Fislleku
nr. sigurimeve: nr.abcd1234
punon në qytet?: q (dmth po)
merr pjesë në sindikatë?: j (dmth jo)
oret e punës: 37
pagesa në orë: 15.5
persona të varur (femijet, gruaja): 0
oret mbi orarin: 5
Kodi:Filan Fislleku nr.abcd1234 q j 37 15.5 0 5 ******************************************************************************* ** xyz corporation data:10/11/04 ** ** 999 john doe street ** ** manhattan, ny. 48197. ** ** ** ** Paguaj per: Filan Fislleku ** ** Numri i Sigurimit: nr.abcd1234 ** ** Shumen: 529 dollare dhe 72 cent ** ** ** ** Firmosur:_____________________ ** ** xyz Corp. President ** ** ** **---------------------------------------------------------------------------** ** ** ** Orari i Rregullt: 573.50 ** ** Mbi Orarin: 116.25 ** ** Paga Gros: 689.75 ** ** Taksa Federale: 96.57 ** ** Sigrm. Shoqerore: 35.87 ** ** Taksa e Qytetit: 27.59 ** ** Sindikata: 0.00 ** ** Paga Neto: 529.73 ** ** ** ******************************************************************************* Mbaro Press any key to continue...
Këtu po bashkangjis kodin:
Mos e kopjo nga forumi por shkarkoje nga skedari ZIP i bashkëngjitur se ka format më të mirë. Më njofto nqs ke paqartësi.
Kodi PHP:
//*****************************************************************************
// Cek.java
// Autori: Edi (edspace@comcast.net)
// Data: 11-10-2004
// Perpiluesi: JCreator, Java 2 SE 1.5.0
// Funksioni: Merr nje kartele pune, llogarit pagen dhe taksat, printon cekun
// Kartela:
// emri mbiemri nr.sigrm qytet sindikate oret paga_per_ore te_varurit mbi_orarin
// Filan Fislleku nr101564 q s 40 10.5 2 5
// Filan Fislleku nr101564 j j 38 10.5 0 0
//*****************************************************************************
import java.util.Scanner; //marr informacion nga perdoruesi
import java.util.Date; //per daten
import java.text.SimpleDateFormat; //klasa per formatimin e dates dd.mm.yy
import java.util.InputMismatchException; //gabim gjate marrjes se info
import java.util.NoSuchElementException; //gabim gjate marrjes se info
public class Cek
{
public static void main(String[] args)
{
//informacioni i kartes se punetorit
String emri = "";
String mbiemri = "";
String numri_sigurimit = "";
boolean punon_ne_qytet = false;
boolean ne_sindikate = false;
int oret_e_punes = 0;
int te_varurit = 0;
float paga_per_ore=0.0f;
float mbi_orarin = 0.0f;
Cek cek = new Cek(); //fillojme klasen
Scanner scan = new Scanner(System.in); //aktivizojme marrjen e informacionit
System.out.println("Fut kartelat e punetoreve. Shkruaj \"Mbaro\" per te mbyllur programin.");
emri = scan.next(); //kerkojme emrin
//per aq kohes sa emri nuk eshte "mbaro" ose "Mbaro"
while( !emri.equalsIgnoreCase("Mbaro") )
{
//*********** MERR KARTELEN *************
try
{
mbiemri = scan.next();
numri_sigurimit = scan.next();
punon_ne_qytet = scan.next().equals("q"); //true vetem nqs fut "q"
ne_sindikate = scan.next().equals("s"); //true vetem nqs fut "s"
oret_e_punes = scan.nextInt();
paga_per_ore = scan.nextFloat();
te_varurit = scan.nextInt();
mbi_orarin = scan.nextFloat();
}
catch( InputMismatchException e ) //nqs kapet ndonje gabim
{
System.out.println("Gabim ne formatin e karteles. (InputMismatchException)");
System.exit(0); //mbyll programin
}
catch( NoSuchElementException t ) //nqs kapet ndonje gabim
{
System.out.println("Gabim ne formatin e karteles. (NoSuchElementException)");
System.exit(0); //mbyll programin
}
//*********** BEJ LLOGARITE *************
float paga_gros = (oret_e_punes * paga_per_ore) + (mbi_orarin * 1.5f * paga_per_ore);
float taksa_federale = 0.14f * (paga_gros - 13 * te_varurit);
float sigurimet_shoqerore = paga_gros * 0.052f;
float taksa_qytetit = 0.0f;
if (punon_ne_qytet)
{
taksa_qytetit = paga_gros * 0.04f;
}
float taksa_sindikates = 0.0f;
if(ne_sindikate)
{
taksa_sindikates = paga_gros * 0.0675f;
}
float neto = paga_gros - taksa_federale - sigurimet_shoqerore - taksa_qytetit - taksa_sindikates;
int neto_dollare = (int)(neto * 100.00f) / 100; //merr shifrat e dollareve psh: 12.50 = 12
int neto_cente = (int)(neto * 100.00f) % 100; //merr shifrat e centeve psh: 12.50 = 50
String neto_dollare_str = new String().valueOf( neto_dollare ); //ktheji ne varg
String neto_cente_str = new String().valueOf( neto_cente ); //ktheji ne varg
//formo vargun: X dollare dhe Y cente
String shuma = neto_dollare_str + " dollare dhe " + neto_cente_str + " cent";
//merr daten e sotme dhe formatoje dita/muaji/viti
String datasot = new SimpleDateFormat("dd/MM/yy").format(new Date());
//fillo printimin e cekut
// %-47s formon nje kollone per (47) karaktere(s) dhe rreshton shkronjat ne te majte (-)
// %7.2f formon nje kollone per (7) numra me presje(f), me (.2) shifra pas presjes,
// reshtimi behet be anen e djathte vetvetiu (nuk ka -)
System.out.println("*******************************************************************************");
System.out.println("** xyz corporation data:" + datasot + " **");
System.out.println("** 999 john doe street **");
System.out.println("** manhattan, ny. 48197. **");
System.out.println("** **");
System.out.printf("** Paguaj per: %-47s **\n", emri + " " + mbiemri );
System.out.printf("** Numri i Sigurimit: %-47s **\n", numri_sigurimit );
System.out.printf("** Shumen: %-47s **\n", shuma );
System.out.println("** **");
System.out.println("** Firmosur:_____________________ **");
System.out.println("** xyz Corp. President **");
System.out.println("** **");
System.out.println("**---------------------------------------------------------------------------**");
System.out.println("** **");
System.out.printf("** Orari i Rregullt: %7.2f **\n", oret_e_punes * paga_per_ore );
System.out.printf("** Mbi Orarin: %7.2f **\n", mbi_orarin * 1.5f * paga_per_ore );
System.out.printf("** Paga Gros: %7.2f **\n", paga_gros );
System.out.printf("** Taksa Federale: %7.2f **\n", taksa_federale );
System.out.printf("** Sigrm. Shoqerore: %7.2f **\n", sigurimet_shoqerore );
System.out.printf("** Taksa e Qytetit: %7.2f **\n", taksa_qytetit );
System.out.printf("** Sindikata: %7.2f **\n", taksa_sindikates );
System.out.printf("** Paga Neto: %7.2f **\n", neto );
System.out.println("** **");
System.out.println("*******************************************************************************");
emri = scan.next(); //merr emrin tjeter
} //perserit kodin e while
} //mbaro main
} //mbaro klasen
Ndryshuar për herë të fundit nga edspace : 10-11-2004 më 13:48
Edi
Edspace me peqlen menyra se si i shkruan programet. Disa sugjerime:
Cek cek = new Cek(); nuk eshte e nevojshme ne kete program.
new SimpleDateFormat("dd/MM/yy") mund te deklarohet vetem nje here dhe te perdoret sa here te duash.
Por edhe te besh ashtu si ben ti nuk eshte praktike e keqe dhe parandalon problemin qe SimpleDataFormat nuk eshte thread safe.
Stili i rekomanduar ne Java per emrat e variablave eshte "taksaQytetit", jo taksa_qytetit.
Faleminderit për këshillat Ilir!
Ke të drejtë për new Cek() se nuk ka anëtarë privat. Kodin më lart e nisa nga një skedar tjetër që përdorte anëtarë privat (private members) dhe harrova ta hiqja.
Këtë punën e emërtimit nuk e kam kuptuar në Java. Për ndryshoret lejohen karakterët A-Za-z0-9_
Ka ndonjë dobi për përdorimin e abcABC apo është vetëm rregull estetike? Të njëjtën këshillë ma bënë edhe në një klasë tjetër ku kisha përdorur _ndryshore për anëtarët privat. Jam mësuar me abc_abc dhe _asdfadf në C++ dhe mendoj se është më i lexueshëm kodi.
Edi
Edspace problemin e emertimit duhet ta konsiderosh seriozisht.
Eshte e vertete qe emertimi eshte ceshtje stili, por stili i Javes eshte i percaktuar nga Sun, e njejta kompani qe ka krijuar Javen, prandaj duhet ndjekur. Nuk ka asnje programues serioz qe shkruan ne Java dhe perdor stil tjeter.
Nese ti do jesh ne nje kompani me programues te tjere, ti duhet te perdoresh stilin qe perdorin ata, perndryshe konfuzioni eshte teper i larte.
Gjithashtu te pakten ne nje rast (mund te kete edhe te tjere) stili eshte i detyrueshem.
E kam fjalen per getters/setters.
Nese ti ke nje variable taksaQyteti, funksionet perkatese duhet te jene
getTaksaQyteti() dhe setTaksaQyteti.
Kjo eshte e detyrueshme se Introspection i cili eshte mjaft i rendesishem per Java Beans do qe emrat te jene keshtu. Nese je kurioz lexo klasen Introspector.java sepse eshte shume instruktive.
Tani une pashe qe ti edhe emrat e metodave i ke me _. Nese ti i ve emrin metodes get_taksa_qyteti, atehere variabli duhet te quhet _taksa_qyteti. Gje jo fort e pelqyeshme apo jo?
Ndersa nese thua getTaksa_qyteti ti theve marreveshjen qe ke bere vete.
Mund te kete edhe implikime te tjera por kaq me vine ne mend ne kete moment.
Ndersa per problemin e C++, C++ nuk ka ndonje stil te fiksuar si Java. Shume kompani kane stilin e tyre. Shpesh stili varet nga platforma ne te cilen punohet. Une ne kete moment po shkruaj nje program ne Windows (Visual C++) dhe stili i rekomanduar eshte:
Emrat e variablave: taksaQyteti.
Emrat e anetareve te nje klase: m_taksaQyteti
Emrat e funksioneve: GetTaksaQyteti
Verej qe funksioni fillon me germe te madhe ketu.
Ne fakt Microsoft sugjeron nje stil shume me te nderlikuar per emrat e variablave (sugjerojne qe germat e para te variablit te tregojne tipin e tij), por une nuk e ndjek.
Gjeta faqen e Java-s për rregullat e drejtshkrimit dhe e lexova të gjithën.
http://java.sun.com/docs/codeconv/ht...nvTOC.doc.html
E di fort mirë arsyen pse duhet ndjekur një stil i caktuar, por më bënë përshtypje këto të Javas se mqns më kritikuan disa njerëz, mendova se do ishin rregulla të pathyeshme. Të pyeta ty për të mësuar nqs Sun kishte ndonjë arsye më të fortë sesa thjesht stili ose komunikimi midis programuesve.
Në faqen më lart, Sun thotë që është mirë të përdoren këto rregulla por nuk i ka me detyrim. Detyrimet e IDE janë gjithashtu çështje preferencash se jo të gjithë përdorin JavaBean.
Shumica e programeve që kam shkruar deri tani kanë qënë për shkollë ose për nevoja personale dhe nuk më është dashur të punoj në grupe të mëdha që ti kushtoj rëndësi stilit, prandaj kam përdorur gjithnjë stilin që më duket mua më i lexueshëm.
Nga librat që kam lexuar, për C++ dhe Java, e shoh që edhe vetë autorët shpikin stilet e tyre të të shkruarit. Javën e parë lexova në një libër që kllapat e një blloku të shkruheshin në rresht më vete:
if (kjo)
{
//bëj këtë
}
dhe thashë ta provoja njëherë këtë stil në kodin që shkruajta më lart. Më parë kam përdorur gjithnjë stilin që rekomandon edhe Java.
if (kjo) {
//bëj këte
}
Arsyeja e autorit për përdorimin e stilit të parë ishte se ky i dyti është përdorur nga programuesit e vjetër në kohën kur programet shkruheshin në terminale dhe kur donin të kursenin letrën
Faleminderit për sqarimin!
Edi
Eds Flm per ndihmen qe po me jep sinqerishte e vleresoj shume mundimin qe po merresh me mua. Edhe ty Ilir te falenderoj qe po e lexon temen edhe na keshillon per mire.
Edspace programi eshte fantastik punon ne rregull por edhe sic edi ti vete qe une jam fillestar ne java dhe akoma nuk e kemi mesuar: try dhe catch prandaj nqs mesuesi e kontrollon kete cod ai do me pyesi edhe une nuk di ti pergjigjem. te lutem ty ose ndonje anetari tjeter qe eshte specialist ta modifikoje ate catch dhe try me ndonje if else statement ose dicka tjeter qe te jete me e kuptushme per mua duke patur parasysh se une jam akoma ne chapter 4 ne java. Sapo kemi mbaruar if, while, do while, for, dhe switch statements dhe duhet te kini parasysh edhe njohurite e mia ne java sepse edhe programi nuk duhet te jete i ketij niveli te larte. Edhe nje here faleminderit shume sinqerisht
ps. SHpresoj te mos bezdish shume se edhe 2 assignments me kan mbetur deri ne fund te simestrit
Dashuria mbi te gjitha
Nuk bezdisem dhe në fakt i bëj me qejf programet se dhe vetë jam i ri në Java dhe dua ta përvetësoj më mirë.
Try-Catch (provo-kap) përdoret për të kontrolluar nqs ndodhin gabime gjatë ekzekutimit të programit dhe për ti thënë kompjuterit çfarë të bëjë kur të kapi gabimet.
Nqs nuk përdorim try-catch dhe ndodhin gabime, Java e mbyll programin dhe lajmëron për gabimet. Kjo mund të jetë e pranueshme për shumicën e programeve por nuk lejohet për programet me rëndësi që duhet të punojnë gjatë gjithë kohës. Programe të tilla mund të jenë në spitale, aeroporte, ushtri, polici, pikat e emergjencës etj. Në raste të tilla programi nuk mund të mbyllet papritur por duhet të bëjë diçka ose të mundohet të riparojë gabimin.
psh: Nqs ndodh një gabim në një program që shpërndan energjinë elektrike, programi duhet të aktivizojë ndonjë alarm ose ta kaloj punën në një program tjetër rezervë që mos ti lërë njerëzit pa drita.
Në programin tënd, unë përdor catch për të kapur gabimet gjatë marrjes së kartelës së punëtorit. Kur ndodhin gabime, e njoftoj përdoruesin për gabimet dhe e mbyll programin. Po t'ja lija në dorë Java, kushedi se çfarë mund të ndodhë; mund të printohet çek me shifër të gabuar; mund të dalë ndonjë gabim i komplikuar që përdoruesi nuk do ta kuptojë, etj, etj.
Struktura e try është e tillë:
Për çdo gabim të mundshëm mund të vendosësh nga një kapje (catch) në vazhdim.Kodi:try{ //bëj x, y, z } catch( gabimi 1 ){ //nqs ndodh gabimi 1 gjatë ekzekutimi të x, y, z // bëj a, b, c } catch( gabimi 2 ){ //nqs ndodh gabimi 2 gjatë ekzekutimi të x, y, z // bëj c, d, e }
Konkretish në programin më lart ti duhet të fshish këto rreshta për të eliminuar try-catch.
Kodi PHP:
import java.util.InputMismatchException; //gabim gjate marrjes se info
import java.util.NoSuchElementException; //gabim gjate marrjes se info
try//fshije
{ //fshije
//mos i fshi rreshtat brënda kllapave
} //fshije që këtu e poshtë
catch( InputMismatchException e ) //nqs kapet ndonje gabim
{
System.out.println("Gabim ne formatin e karteles. (InputMismatchException)");
System.exit(0); //mbyll programin
}
catch( NoSuchElementException t ) //nqs kapet ndonje gabim
{
System.out.println("Gabim ne formatin e karteles. (NoSuchElementException)");
System.exit(0); //mbyll programin
}
Kur të mbarosh së fshiri try-catch, kodi për marrjen e kartelës duhet të duket kështu.
Kodi PHP:
while( !emri.equalsIgnoreCase("Mbaro") )
{
//*********** MERR KARTELEN *************
mbiemri = scan.next();
numri_sigurimit = scan.next();
punon_ne_qytet = scan.next().equals("q"); //true vetem nqs fut "q"
ne_sindikate = scan.next().equals("s"); //true vetem nqs fut "s"
oret_e_punes = scan.nextInt();
paga_per_ore = scan.nextFloat();
te_varurit = scan.nextInt();
mbi_orarin = scan.nextFloat();
//*********** BEJ LLOGARITE *************
Edi
Edspace e rregullova sipas udhezuesit qe me tregove dmth i vshiva try edhe catch sepse ato akoma nuk e kishim mesuar. Tani kam problem me keto:
String neto_dollare_str = new String().valueOf( neto_dollare ); //ktheji ne varg
String neto_cente_str = new String().valueOf( neto_cente );
sepse akoma nuk e kemi mesuar keto qe ti kthejme dhe nuk dua qe mesuesi te me pyese po ti kur i mesove keto dhe do e kuptoje qe dikush tjeter po me ndihmon. Atere po kerkoj nqs ke mundesi ti fshish ato lines ne programin e meposhtem pa patur ndonje ndikim ne rezultatet. Thx in advance
Ndryshuar për herë të fundit nga edspace : 16-11-2004 më 21:37
Dashuria mbi te gjitha
Krijoni Kontakt