PDA

View Full Version : سوال: عدم تشخیص نقطه و space در میان متن



hooooman
چهارشنبه 12 اسفند 1394, 12:22 عصر
سلام
دوستان عزیز این کد که در زیر اومده نمیدونم چه ایرادی داره که کاراکتر . و " " (ینی space) رو در یک رشته تشخیص نمیده
اگه میشه راهنمایی بفرمایین


import java.util.*;

public class matndelkhah {

public static void main(String[] args)
{
String _matn,_makoosmatn,_checkW;


int _horuf,_kalamat,_jomalat,j;
Scanner user_input=new Scanner(System.in);

_matn=user_input.nextLine();


String[] _arrmatn=new String[_matn.length()];
String[] _arrmakoosmatn=new String[_matn.length()];

_horuf=_matn.length();
_jomalat=0;
if (_matn.trim().length()==0)
{
_kalamat=0;
}
else
{
_kalamat=1;
}

j=1;
_jomalat=0;
_checkW="";
for (int i=0;i<_matn.length();i++)
{


if (_matn.substring(i, i+1);==".".trim())
{
System.out.println(_matn.substring(i, i+1));
}
else
{
System.out.println("no");
}

}
}
}

محمد فدوی
پنج شنبه 13 اسفند 1394, 17:36 عصر
کد شما ایراد داره و بسیار هم غیر اصولی نوشته شده. به هر حال اینجوری که من در ظاهر می‌بینم اگه بخش If رو به این تغییر بدی باید مشکل حل بشه:

...
if (".".equals(_matn.substring(i, i + 1)))
...

و البته اگه قرار بود من این برنامه رو بنویسم اینجوری می‌نوشتم:
public static void main(String[] args) {
String matn = new Scanner(System.in).nextLine();
for(char c : matn.toCharArray()) {
System.out.println(c == '.' ? "." : "No");
}
}

hooooman
یک شنبه 16 اسفند 1394, 03:56 صبح
با تشکر فراوون آقای فدوی البته من تازه کار هستم و سعی میکنم در کد نویسی جاوا به سمت رعایت اصاول برم.
یه سوال داشتم تفاوت کوتیشن با دبل کوتیشن در جاوا چیه؟

hooooman
یک شنبه 16 اسفند 1394, 04:12 صبح
در ضمن ، چه تفاوتی بین



if (_alamat=="+")



و




if ("+".equals(_alamat))



هستش که اولی درست کار نمیکنه ولی دومی درست کار میکنه

محمد فدوی
یک شنبه 16 اسفند 1394, 14:54 عصر
برای مطرح کردن سؤالات جدید بهتره موضوع جدیدی رو ایجاد کنید..


... تفاوت کوتیشن با دبل کوتیشن در جاوا چیه؟
نقل‌قول تک یا همون کاراکتر «'» برای نشون دادن کاراکتر (Character) و نقل قول جفت یا «"» برای نشون دادن رشته (String) به کار می‌ره.
String str = "Some String";
char chr = 'A';


در ضمن ، چه تفاوتی بین ... و ... هستش که اولی درست کار نمیکنه ولی دومی درست کار میکنه
عملگر مقایسه‌ای تساوی یا همون «==»، در مورد اشیاء، فقط وقتی مقدار درست (True) رو برمی‌گردونه که دو هر دو شیء دقیقا یکی باشن؛ یعنی اگه دو شیء مقادیر مشابهی توی خودشون داشته باشن ولی دقیقا یک شیء نباشن عملگر تساوی مقدار نادرست (False) رو برمی‌گردونه. این در حالیه که متد equals، در مورد دوم هم مقدار درست (True) رو برمی‌گردونه، و از اونجایی که در جاوا، رشته‌ها شیء هستن، باید موقع مقایسه‌کردنشون حواسمون به این موضوع باشه.
یه مثال می‌زنم:
public static void main (String[] args) {
String john = "John";

String theJohn = john;
String anotherJohn = " John".trim();

System.out.println("john == theJohn: " + (john == theJohn));
System.out.println("john == anotherJohn: " + (john == anotherJohn));
System.out.println("john.equals(theJohn): " + john.equals(theJohn));
System.out.println("john.equals(anotherJohn): " + john.equals(anotherJohn));

/*
* OUT:
* john == theJohn: true
* john == anotherJohn: false
* john.equals(theJohn): true
* john.equals(anotherJohn): true
*/
}
همونطور که می‌بینی، با اینکه مقادیر john و anotherJohn یکی هست، ولی عملگر تساوی اون‌ها رو برابر نمی‌دونه، چون اینا دو شیء متفاوتن. این در حالیه که در مورد john و theJohn عملگر تساوی، مقدار درست (True) رو برمی‌گردونه چون دقیقا یک شیء هستن.

پ.ن: ممکنه توی برنامه‌ای تست کنی و نتیجه رو متفاوت از توضیحات من ببینی یا مثلا کارت با عملگر تساوی راه بیفته.. دلیلش اینه که جزئیات زیادی این وسط مطرحن که الان از بحث ما خارجه.. ولی این جمله همیشه درسته که: «بهتره هروقت می‌خوای برابر بودن مقادیر دو شیء رو مقایسه کنی از متد equals، و وقتی می‌خوای دقیقا یکی بودن دو شیء رو بررسی کنی از عملگر تساوی استفاده کنی.»

ahmad.mo74
دوشنبه 09 فروردین 1395, 06:28 صبح
با تشکر فراوون آقای فدوی البته من تازه کار هستم و سعی میکنم در کد نویسی جاوا به سمت رعایت اصاول برم.
یه سوال داشتم تفاوت کوتیشن با دبل کوتیشن در جاوا چیه؟

بهتره اول اینو مطالعه کنید :

https://en.wikipedia.org/wiki/Naming_convention_(programming)#Java