PDA

View Full Version : راهنمایی در مورد متد compreTo



sina4everafter
سه شنبه 06 خرداد 1393, 18:00 عصر
سلام دوستان.اگر امکانش هست من و راهنمایی کنید.ممنون.

می خواستم بدونم دقیقا این متد چطور کار می کنه.من اینطوری دربارش خوندم که اگر string ای که این متد و احضار می کنه کوچکتر از string ای باشه که به عنوان آرگومان منتقل می شود، یک مقدار منفی و برمی گردونه در غیر اینصورت یک مقدار مثبت و اگر برای 0.
توی کد زیر اگر نگاه کنید، به نظرم این اصول و رعایت نمی کنه.


package javaapp.test;


public class JavaAppTEST {


public static void main(String[] args) {
//---String--
String str1 = "hello";
String str2 = "goodbye";
String str3 = "Happy Birthday";
String str4 = "happy birthday";
//---compareTo---
System.out.println(str1.compareTo(str2));
System.out.println(str2.compareTo(str1));
System.out.println(str1.compareTo(str1));
System.out.println(str3.compareTo(str4));
System.out.println(str4.compareTo(str3));
//---End-
System.out.println("\n");
}
}


خروجی ای این برنامه:
1
-1
0
-32
32
ممنون اگر راهنماییم کنید.

vahid-p
سه شنبه 06 خرداد 1393, 19:11 عصر
درسته. یعنی امکان نداره اشتباه باشه :)
ببینید در مقایسه اولی داره میگه str1 از str2 بزرگتره. که درسته. چون تو حروف الفبا اول g میاد و بعد h . و طبق کد اسکی، h عددش بزرگتر از g است. پس نتیجه اینکه str1 از str2 بزرگتره پس عدد برگشتی مثبت است.
برای بعدی هم که عکس همین موضوع است.
برای مقایسه str3 و str4 به این موضوع توجه کنید که ابتدا حروف بزرگ می آیند و بعد حروف کوچک. یعنی در کد اسکی، حروف کوچک دارای عددی بزرگتر از عدد حروف بزرگ هستند. پس نتیجه درسته.
مثلا کاراکترهای رقمی ( '0' , '1' ,... ) اسکی کدی کمتر از حروف دارند. پس در ترتیب صعودی اول اعداد میان، بعد حروف بزرگ و بعد حروف کوچک.

بهتره به اسکی کد یه نگاه بندازین :
http://www.jimprice.com/ascii-0-127.gif

jrl_golestani
سه شنبه 06 خرداد 1393, 19:20 عصر
سلام دوست عزیز
متد compareTo وظیفه اش مقایسه دو رشته طبق کد اسکی شون هست . اگر رشته اول کد اسکی حرف اولش از رشته دوم بزرگتر باشه عدد مثبت برمیگردنه که این عدد اینجوری بدست میاد کد اسکی حرف اول منهای کد اسکی حرف اول رشته دوم . اگه مساوی باشن صفر و اگر کوچیکتر باشه منفی . در برنامه بالا دقیقا رعایت شده str1 حرف اولش h هست و str2 حرف اولش g کد اسکی رشته اول از کد اسکی رشته دوم بزرگتر است و یه عدد مثبت برگشت داده شده میدونی چون این دو عدد کد اسکیشون یکی اختلاف داره پس +1 برگشت داده شده . در مورد str3 و str4 حرف اول str3 با h کوچیک شروع شده و str4 حرف اولش با H بزرگ میدونی حروف کوچیک انگلیسی کد اسکیشون بزرگتر از حروف بزرگ انگلیسی هست پس str3 از str4 کوچیکتر هست. اگه دو رشته دارای حرف اول مشابه باشن حرف دوم و اگه حرف دوم مشابه باشه خرف سوم و به همین ترتیب مقایشه میکند.