ورود

View Full Version : کمک !



mahdis123
سه شنبه 13 تیر 1391, 17:44 عصر
سلام.

من برا نوشتن پروژم به مشکل خوردم .. برا همین گفتم اینجا مطرح کنم شاید دوستان بتونن کمک کنن ..

من دارم با Eclips یک پروژه جاوا مینویسم که در اون باید یک فایل رو با استفاده از args[0] بگیرم بعدش اون فایل رو خط به خط بخونم .. داخل فایل همه خطها حالا هر چندتا هست با # شروع میشه و فقط سه خط با $ شروع میشه .. من باید خط به خط بخونم اگه با شارپ شروع شده بود که اون خط رو کلا بیخیال بشم و رد کنم یعنی کامل نخونم .. اگه با $ شروع شده بود یه سری کارا کنم .. خوب من تا اینجا پروژه رو نوشتم یعنی میتونم شارپ و دلارا از هم تشخیص بدم که کاری هم نداره ...
حالا گفتم 3تا خط موجوده تو فایله که کلا به $ شروع میشه ... $ اول نشون دهنده یه سری اسمه ... $ دوم نشون دهنده ی یه سری شغله و. $ سوم نشون دهنده ی اسم و شغل با همه .. حالا اگه یوزر وارد کرد "users" من باید محتویات $ اول رو نشون بدم و اگه وارد کرد "groups" من باید محتویات خطی رو نشون بدم که $ دوم داره.
حالا من مشکلم اینه که من شارپا رو skip کردم .. از کجا بفهمم این دالار اوله .. اون دومه که بخوام رو هرکدوم کارای مربوط به خودش رو انجام بدم ؟؟؟ :ناراحت: خواهش میکنم جواب بدین من تازه دارم جاوا رو میخونم برا همین به مشکل خوردم.

spiderman200700
سه شنبه 13 تیر 1391, 19:16 عصر
سلام.
کار خیلی ساده ایه.
باید یه آرایه 3تایی از String درست کنی.
وقتی موقع خوندن فایل برای اولین بار به $ رسیدی اونو بذار توی خونه ی اول آرایه ، وقتی دومین بار به $ رسیدی اون خط رو بذار توی خونه ی دوم آرایه و برای بار سوم هم توی خونه ی سوم آرایه.
بعد دیگه توی آرایه معلومه که کدوم $ اوله کدوم دومه و کدوم سومه.

mahdis123
سه شنبه 13 تیر 1391, 19:34 عصر
آها درسته ... اصلا به فکر خودم نرسید .. حالا انجام میدم ببینم چطو میشه .. خیلی ممنون .. واقعا کمک کردین :)

spiderman200700
سه شنبه 13 تیر 1391, 21:08 عصر
امیدوارم موفق باشی.

mahdis123
چهارشنبه 14 تیر 1391, 19:31 عصر
یه سوال دیگه پیش اومد .. یه قسمت پروژه من باید کاربر یه کوئری وارد کنه که فرمتش اینجور باشه .... "is esmeUser esmeShoghl" بعدش برنامه من باید بیاد داخل یه خط string که فرمتشون به صورت زیره بگرده اگه اون یوزر و همون نوع شغل رو یافت ... yes چاپ کنه اگه نیافت No.
فرمت استرینگ: user1@shoghle1, user2@shoghle2 , ....

حالا مشکل من اینه که چجور باید داخل این استرینگ دنبال اون اسم و شغلی که کاربر به صورت یک استرینگ وارد کرده سرچ کنم ؟؟؟
گفتن برا این کار میتونی از collection استفاده کنی .. ولی من نمیدونم چجوری ؟؟ میشه منو راهنمایی کنین لطفا" ؟؟؟

ممنون

spiderman200700
چهارشنبه 14 تیر 1391, 20:45 عصر
یه متد واسه این کار نوشتم.
امیدوارم کار کنه.
public boolean exsist(String query, String data) {
String info[] = new String[2];
StringTokenizer stringTokenizer = new StringTokenizer(query, " ");
stringTokenizer.nextToken();
info[0] = stringTokenizer.nextToken();
info[1] = stringTokenizer.nextToken();
stringTokenizer = new StringTokenizer(data, ",");
while (stringTokenizer.hasMoreTokens()) {
String temp = stringTokenizer.nextToken();
if (temp.substring(0, temp.indexOf("@")).equals(info[0]) && temp.substring(temp.indexOf("@") + 1).equals(info[1])) {
return true;
}
}
return false;
}


فقط حتما باید هم جستجو(query) و هم اطلاعاتی که میخواید توش جستجو کنید(data) با همون فرمتی که گفتید باشه.

mahdis123
پنج شنبه 15 تیر 1391, 09:06 صبح
مرسی ...

برا من که کار نکرد این :( ..

یه توضیحی درباره کل متد و مخصوصا اون if آخری ...

spiderman200700
پنج شنبه 15 تیر 1391, 10:08 صبح
دز خطوط 2 تا 7 query کاربر یعنی is esmeUser esmeShogh رو تجزیه کردیم و توی یه آرایه ی دوبعدی ریختیم . یعنی فقط esmeUser و esmeShogh رو توی آرایه ریختیم.
در خط 7 به بعد هم "user1@shoghle1, user2@shoghle2" رو تجزیه کردیم و به پارت های این شکلی user1@shoghle1 تقسیم کردیم. هر دفعه که یه پارت جدا میشه توی if چک میکنیم که آیا توی این پارت، قسمت قبل از @ برابر قسمت اول query کاربر و قسمت بعد از @ برابر با قسمت دوم query کاربر هست یا نه. به محض اینکه توی یکی از پارت ها هر دو شرطی که گفتم ذرست باشه true برمیگرده(یعنی جستجو موفق بوده) و متد تموم میشه. واگه تمام پارتها رو گشتیم و شرط if برای هیچ پارتی درست نباشه حلقه به پایان میرسه و false برگردونده میشه (جستجو ناموفق بوده)