الوقت/التاريخ الآن هو السبت مارس 28, 2020 2:00 pm

3 نتيجة بحث عن reverse

[Java] الطرق المختلفة لفحص النصوص و الارقام و التاكد من انها قيم متناظرة أم لا Palindrome In Java

اهلا بكم 

تحقق ما إذا كان النص أو الرقم المعطى متناظر أم لا؟ ...من أكثر الاسئلة التى تواجه الطلبة الاكاديميين وهناك عدة طرق لفعل ذلك ...فى هذا المقال سنحاول شرحها 

ما هو التناظر ؟

الارقام أو الكلمات او حتى الجمل المتناظرة هى التى يمكنك قرائتها من اليمن أو من الشمال و تعطيك نفس النتيجة بمعنى أخر هو نفس الرقم او الكملة بشكل عسكي  على سبيل المثال 545 ، 151 ، 34543 ، 343 ، 171 ، 48984 هي أرقام متناظرة ....ليبيا , Radar, Madam كلمات متناظرة ...ومن الجمل المتناظرة Was it a car or a cat I saw 

كيف يمكن كتابة برنامج JAVA لفحص النص او الرقم المعطى متناظر أم لا ؟

توجد عدة طرق لفعل ذلك على النحو التالى :

1_باستخدام التحقق من طول المدخلات 

فى هذه الطريقة يتم التحقق من طول المدخلات. إذا كان طول الكلمة أو النص هو صفر أو واحد ، فسيتم إرجاع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. إذا كان طول النص المدخل أكثر من واحد ، فإنه يتحقق من مساواة طرفي النص. إذا لم يكن كلا الطرفين متساويين ، فيُرجع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. إذا كان كلا الطرفين متساويين ، فستتم إعادة الاتصال مرة أخرى باستخدام أحرف من كلا الطرفين.

الكود:


public class Test1 {

    static boolean isItPalindrome(String S)
    {
        
       //اذا كان النص اقل من حرفين فمعنى ذلك انه متناظر ويتم ارجاع ذلك
       if(S.length() < 2)
        {
            return true;
        }
        else
        {
            //التحقق من مساواة طرفى النص
            
            if(S.charAt(0) != S.charAt(S.length()-1))
            {
                //اذا كان الطرفين غير متساويات يتم ارجاع خاطئ
                
                return false;
            }
            else
            {
                //اذا كان الطرفين متساويين يتم ارجاع الطريقة يتم حذف الطرفين ثم العودة لفحص الطرفين الجديدن
                
                return isItPalindrome(S.substring(1, S.length()-1));
            }
        }
        
    }
  
    public static void main(String[] args) {
      
       String S ="Rotator";
       //قبل التاكد من النص نقوم بحذف اى فارغ قد يوجد ونفى حالة الاحرف حتى نتمكن من مقارنة النص سواء كان باحرف كبيرة او صغيرة
       String cleanInputString = S.replaceAll("\\s+", "").toLowerCase();
        
        if (isItPalindrome(cleanInputString))
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }
      
    }
    
}



2_باستخدام الطريقة StringBuffer

تمتلك الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذى يقوم بعكس النص المعطى الية حيث يتم عكس النص المحدد باستخدام أسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] . فإذا كانت السلسلة الأصلية والسلسلة المعكوسة متشابهتين ، فان النص يكون متناظر و العكس صحيح ...ويتم ذلك على النحو التالى :

الكود:


public class Test1 {

  
    public static void main(String[] args) {
      
       String S ="Rotator";
      
       // استخدام الطريقة لعكس النص المدخل
       String S2  = new StringBuffer(S).reverse().toString();
        
        
      
       //مقارنة النص الاصلى مع النص المعكوس للتاكد المساواة بينهم من عدمة
        if (S.equalsIgnoreCase(S2))
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }
      
    }
    
}



3_ استخدام الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

منذ الاصدار 8 للجافا يمكنك استخدام الدالة أو الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] للتحقق مما إذا كانت السلسلة المعطاة متناظرة أم لا وذلك على النحو التالى :

الكود:

import java.util.stream.IntStream;


public class Test1 {

  
    public static void main(String[] args) {
      
       String S ="Rotator";
      
        boolean isItPalindrome = IntStream.range(0, S.length()/2).
                noneMatch(i -> S.charAt(i) != S.charAt(S.length() - i -1));
        
        if (isItPalindrome)
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }    }
    
}


4_ الطريقة الاخيرة و التى تسخدم فى الارقام فقط

الكود:

public class Test1 {

  
    public static void main(String[] args) {
      
       int n = 171;
       int sum = 0, r;
    int temp = n;    
       while(n>0)
      {    
        r = n % 10;  
        sum = (sum*10)+r;    
        n = n/10;    
       }    
      if(temp==sum)    
        System.out.println("It is a Palindrome number.");    
      else    
        System.out.println("Not a palindrome");
    
    }
    
}
من طرف أحمد مناع
في السبت فبراير 16, 2019 7:49 pm
 
ابحث في: التعامل مع حزم الجافا java package
موضوع: [Java] الطرق المختلفة لفحص النصوص و الارقام و التاكد من انها قيم متناظرة أم لا Palindrome In Java
المساهمات: 0
مشاهدة: 200

[Java] التعامل مع الفئة Java StringBuilder

أهلا بكم 

_الفئة Java StringBuilder


هى إحدى الفئات التى توفرها لغة الجافا منذ الاصدار JDK 1.5 للتعامل مع مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها) فهى تشبة الى حد كبير الفئة  [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تحدثنا عليها فى مقال سابق وربما يكون الفرق الوحيد بينهما أن الفئة #StringBuilder متزامنة synchronized فى حين أن الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] غير متزامنة non-synchronized 

_مشيدات الفئة StringBuilder



اهم ثلاث مشيدات الفئة #StringBuilder التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuilder()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuilder(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuilder(int length)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuilder


تحتوي الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....مثال : الحاق كلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الى الكلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] على النحو التالى :

الكود:
class StringBuilderExample{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuilder#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بعد الحرف الاول للقيمة المخزنة فى [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] :

الكود:
class StringBuilderExample2{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello


3_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....المثال التالى يوضح الفكرة :

الكود:
class StringBuilderExample3{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بالكلمة Java
HJavalo


4_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBuilderExample4{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....مثال يوضح الفكرة

الكود:
class StringBuilderExample5{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.reverse();  
System.out.println(sb);//prints olleH  
}  
}  


المخرجات :
olleH

6_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بارجاع سعة المخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ...مثال توضيحيى :

الكود:
class StringBuilderExample6{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
}  
}  


المخرجات :

16
16
34

7_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تضمن طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBuilderExample7{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 8:21 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuilder
المساهمات: 1
مشاهدة: 155

[Java] التعامل مع الفئة Java StringBuffer

أهلا بكم 

_الفئة Java StringBuffer


هى إحدى الفئات التى توفرها لغة الجافا للتعامل مع النصوص تشبة الى حد كبير الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] إلا أن الفئة #StringBuffer تسخدم لإنشاء و التعامل مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها)

_مشيدات الفئة StringBuffer



اهم ثلاث مشيدات الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuffer()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuffer(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuffer(int capacity)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuffer


تحتوي الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....مثال : الحاق كلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الى الكلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] على النحو التالى :

الكود:
class StringBufferExample{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuffe#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بعد الحرف الاول للقيمة المخزنة فى [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] :
الكود:
class StringBufferExample2{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello



3_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....المثال التالى يوضح الفكرة :

الكود:
class StringBufferExample3{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);HJavalo  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بالكلمة Java
HJavalo


4_الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBufferExample4{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ....مثال يوضح الفكرة

الكود:
class StringBufferExample5{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.reverse();  
System.out.println(sb);  
}  
}  


المخرجات :
olleH

6_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تقوم تلك الطريقة بارجاع سعة المخزن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ...مثال توضيحيى :

الكود:
class StringBufferExample6{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());  
}  
}  


المخرجات :

16
16
34

7_ الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

تضمن طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBufferExample7{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 7:00 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuffer
المساهمات: 1
مشاهدة: 248

الرجوع الى أعلى الصفحة

انتقل الى: