PDA

View Full Version : مبتدی: مشکل در مقایسه دو متغیر



drsina
جمعه 09 اسفند 1392, 01:29 صبح
سلام .
این کد رو ببینید »


if(jTextField1.getText() == "User" && jPasswordField1.getText()== "123"){ System.out.println("Entered");
}
else{

JOptionPane.showMessageDialog(frame, "You are anonymous to Enter.", "User or Pass is Wrong",JOptionPane.ERROR_MESSAGE);
System.out.println(jTextField1.getText() + "-----" + jPasswordField1.getText());
}

هر دفعه بجای اینکه به If بره به Else میره . وقتی هم محتویاتشو می بینم درسته ! کارم کجاش اشتباست ؟!

cups_of_java
جمعه 09 اسفند 1392, 09:49 صبح
رشته ها رو با == مقایسه نکن از متد equals یا equalsIgnoreCase توی کلاس String استفاده کن

drsina
جمعه 09 اسفند 1392, 12:46 عصر
بازم نشد .
if(jTextField1.getText().equalsIgnoreCase("user")== true && jPasswordField1.getText().equalsIgnoreCase("123")== true){
System.out.println("Entered");
}
اینم کدمه . با Equals هم نشد .

drsina
جمعه 09 اسفند 1392, 12:56 عصر
درست شد . ممنون .... تویه تکست فیلد یه space اضافه بود .

حالا یه سوال دیگه : چرا از == برای مقایسه ی رشته استفاده کنم ؟!

cups_of_java
شنبه 10 اسفند 1392, 08:15 صبح
وقتی تکست توی ورودی ها و Input ها رو میگیری همیشه می تونی از تابع trim استفاده کنی تا spaceهای اول و آخر احتمالی رو توش حذف کنه تا این مشکلات پیش نیاد.



حالا یه سوال دیگه : چرا از == برای مقایسه ی رشته استفاده نکنم ؟!
ضمنن == همیشه مساوی بودن مقادیر reference ها رو چک می کنه (یعنی آدرس شی ها) نه محتویات شی ها. بنابراین برای رشته ها مثلن یه تابع equals نوشتن که یکسان بودن محتویات رشته ها رو بررسی کنه.