ورود

View Full Version : درخواست کمک



javad-ch
دوشنبه 05 خرداد 1393, 19:01 عصر
سلام دوستان، عذر میخوام که سوالم رو اینگونه مطرح میکنم !

بنده هیچ آشنایی‌یی با زبان جاوا نداشته و ندارم و از من برنامه ساده‌ی ماشین حساب رو خواسته شده که کدش رو توضیح بدم !
کد برنامه رو دارم و خواستم ازتون کمک بخوام توی تریس کردنش بهم کمک کنید ، کسانی که بلدن میتونن توضیح بدن که کدهای زیر دقیقن چه کارایی رو انجام میدن ازتون ممنون میشم




public class Calc extends MIDlet implements CommandListener{
TextField inp;
Display display;
Command add,OK,Exit,sub,div,mul,History;
int result;
Image img;
Ticker tk;
public void ArrangeCommand(Command c1,Command c2, Command c3,Command c4,Command c5,Command c6)
{

}
public Calc()
{
try {
tk=new Ticker("Start");
img = Image.createImage("/CALC LOGO.png");
History=new Command("History", Command.OK, 6);
inp = new TextField("Input", "", 10, TextField.NUMERIC);
add = new Command("ADD", Command.OK, 1);
div=new Command("Divide", Command.OK, 3);
mul=new Command("Multiply", Command.OK, 5);
sub=new Command("Subtract", Command.OK, 2);
OK = new Command("OK", Command.STOP, 4);
Exit=new Command("EXIT", Command.EXIT, 7);
} catch (IOException ex) {
ex.printStackTrace();
}

}
public void startApp()
{
display =Display.getDisplay(this);
Form f1=new Form("CALCULATOR BY javad");
f1.setTicker(tk);
f1.append(inp);
f1.append(img);
f1.addCommand(History);
f1.addCommand(add);
f1.addCommand(OK);
f1.addCommand(Exit);
f1.addCommand(sub);
f1.addCommand(div);
f1.addCommand(mul);
f1.setCommandListener(this);
display.setCurrent(f1);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional)
{
notifyDestroyed();
}
int kpress=0;
void ad()
{
kpress=0;
if(inp.size()!=0)
{
tk.setString(tk.getString()+"+"+inp.getString());

String input=inp.getString();
result+=Integer.parseInt(input);
}
}
void sb()
{
kpress=1;
if(inp.size()!=0)
{
tk.setString(tk.getString()+"-"+inp.getString());

String input=inp.getString();
if(result==0)
result=Integer.parseInt(input);
else
result-=Integer.parseInt(input);
}
}
void ml()
{
kpress=2;
if(inp.size()!=0)
{
tk.setString(tk.getString()+"x"+inp.getString());

String input=inp.getString();
if(result==0)
result=Integer.parseInt(input);
else
result*=Integer.parseInt(input);
}
}
void dv()
{
try
{
kpress=3;
if(inp.size()!=0)
{
tk.setString(tk.getString()+"/"+inp.getString());

String input=inp.getString();
if(result==0)
result=Integer.parseInt(input);
else
result/=Integer.parseInt(input);
}
}
catch(Exception ex)
{
result=0;
}
}
public void commandAction(Command c,Displayable d)
{
if(c==add)
ad();
if(c==sub)
sb();
if(c==mul)
ml();
if(c==div)
dv();
if(c==History)
{
Alert nalt=new Alert("History",tk.getString(),null,AlertType.INFO);
nalt.setTimeout(Alert.FOREVER);
display.setCurrent(nalt);
}
if(c==OK)
{
try
{
if(kpress==0)
ad();
else if(kpress==1)
sb();
else if(kpress==2)
ml();
else if(kpress==3)
dv();
else{}

}
catch(Exception ex)
{}
finally
{
tk.setString(tk.getString()+"="+result);
Alert res=new Alert("Result","RESULT = "+result, img, AlertType.INFO);
res.setTimeout(5000);
res.setImage(img);
display.setCurrent(res);


}
}
if(c==Exit)
destroyApp(true);
inp.setString("");
}
}

vahid-p
دوشنبه 05 خرداد 1393, 20:31 عصر
بگو کجاهاشو مشکل داری؟ کل کد رو توضیح دادن یعنی چی؟ یعنی تک تک شرط ها رو هم بگیم که چی داره میگه؟ باید آشنایی نسبیتون حداقل با زبان های برنامه نویسی دیگه رو بدونیم.

ضمنا نمیدونم چرا تو انجمن جاوا موبایل نوشتید!!!

jrl_golestani
دوشنبه 05 خرداد 1393, 20:51 عصر
دقیقا دوستمون درست میگه بگو کجاشو مشکل داری یا تو قالب سوال هر جای که سر در نمیاری بپرس . نگران نباش مشکلی نیست همه شو یاد مگیری.

javad-ch
دوشنبه 05 خرداد 1393, 21:37 عصر
بگو کجاهاشو مشکل داری؟ کل کد رو توضیح دادن یعنی چی؟ یعنی تک تک شرط ها رو هم بگیم که چی داره میگه؟ باید آشنایی نسبیتون حداقل با زبان های برنامه نویسی دیگه رو بدونیم.

ضمنا نمیدونم چرا تو انجمن جاوا موبایل نوشتید!!!


وحید جان یک ماشین حساب تحت جاواست که روی موبایل اجرا میشه . . .

قسمت اول کد متغیرها رو تعریف میکنه و با اونش مشکلی ندارم

قسمت بعدی رو هم فکر میکنم متوجه میشم ولی نمیدونم اینکه توی کلاس try نوشته یعنی چی !

قسمت startapp رو هم فکر میکنم متوجه میشم که مربوط به اضافه کردن کنتذل هاست ،

قسمت pause app رو متوجه نمیشم ! (شاید برای کاراکترهای ورودی باشه که بنا به عملگر دریافتی اون عمل رو روی دو عدد انجام میده)

این دستور رو هم نمیدونم یعنی چی catch(Exception ex

قسمت command action رو هم متوجه نمیشم

قسمت آخر که مربوط به آلرت جواب دادنه و میفهممش



من ویژوال بیسیک و سی ++ کار کردم ولی خوب از اینا سر در نمیارم .

فکر میکنم آدم اعتراف کنه بهتره تا مقدمه چینی کنه که بلد نبودنش رو توجیح کنه ! ممنون میشم اگه چند خط کد رو برای من باز کنید ، خیلی کمک بزرگی بهم میکنین :(

vahid-p
سه شنبه 06 خرداد 1393, 15:19 عصر
متاسفانه قبل از امتحاناست و فرصت زیاد نیست. کد رو بررسی نمیکنم ( مثلا خیلی از سوالاتتون مربوط به method های برنامه است که از رو اسمشون میشه تشخیص داد قراره چه کاری انجام بده )، فقط مفاهیم کلیش رو توضیح میدم.
1- استفاده از try و catch ( هر دو با هم هستند ) بهشون مدیریت استثناها میگن. شما اگر با Netbeans , eclipse و... کار کنید، هر جا لازم باشه، حتما خودش هشدار میده. اینها دلیلش اینه که گاهی اوقات مثلا از فیلد یک آبجکت استفاده میکنی، در صورتی که اون آبجکت اصلا ازش new نشده. اینجا مثلا Exception ( استثنا ) nullpointer میده. یا مثلا شما یک عدد رو تقسیم بر صفر میکنید، اکسپشن محاسباتی میده. یا مثلا میخوای یه فایل رو بخونی ولی اون فایل وجود نداشته باشه FileNotFoundException میده و... . این کار رو از این جهت آسون میکنه که شما تمامی حالات ممکن رو مطمئنا در نظر خواهید گرفت ( به جز NullPointer و... که میتونید هندل کنید میتونیدم نکنید و خودش اررور رو میده ). اینکه چجوری میتونیم خودمون exception های مختلف تولید کنیم هم سادست ( همش گذاشتن چند تا شرط و new throw کردن اکسپشن هست ) ولی اینجا محل بحثش نیست.
این از ماهیتشون. حالا میمونه هندل کردن این استثنائات که بهش میگن مدیریت استثنا. در اصل شما میگید
try{
.....
} catch ( Exception ex ){
....
}

چیزهایی که در try قرار داره رو اجرا کن، اگر به استثناء برخورد کردی استثنا رو پرتاب کن ( throw ) و اونو با فلان بگیر ( catch ). یعنی مثلا میگی اگر استثنا یا خطا رخ داد اون چیزی که تو قسمت catch قرار داده رو اجرا کن وگرنه خیر. مثلا میتونید یه پیام هشدار داخلش بنویسید که معمولا تو نرم افزارهایی که GUI دارن کاربرد زیادی داره. وگرنه خود Eclipse , Netbeans ,... با یه پیام پیش فرض که خیلی هم به درد بخوره پر میکنن.

startapp , pauseapp که مشخصه از اسمشون. commandAction هم یه متد هست که دقیقا داره عمل های جمع و ضرب و غیر رو میگیره ( با توجه به implements CommandListener که در بالای کلاس نوشتید، کلیک های شما توسط متد commandAction اجرا میشه که شما باید این متد رو پیاده سازی ( implement ) کنید - به اینا میگن listener که برای موس و کیبورد و... وجود داره -). شما رو هر کدوم ( ضرب جمع و... )کلیک کنید یه آبجکت از نوع Command میده که اونوقت با شرط های متوالی چک میکنه کدوم هست و عمل مربوطه رو انجام میده.

موفق باشید