الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Boolean Operators and My Alphabet

مغلق
بدأه موظف في 26 مايو 2005 · 2 رد · 531 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله تعالى وبركاته...

أعمل على كود لكن واجهتني المشكلة التالية:

أريد القراءة من text file ما واكتشاف أي حرف لا ينتمي إلى مجموعة الحروف {A,B,C,=,+}، بشرط أن القراءة تتم ابتداءً من السطر الثاني حتى السطر قبل الأخير، لكن لا أعرف إن كنت استخدمت ال Boolean Operators بشكل صحيح كما تريده الجافا أم لا؟!

هذا كود نموذج للمشكلة:

public class BooleanOperators{
	public static void main(String[] args){
  int len,i,line=1;
  String s = "begin\nA=B+C\nA=B+hCC=C-B\nC=end";
  len = s.length();
  for(i=0;i<len;i++){
 	 if(s.charAt(i)=='\n'){line++;}
 	 if( (line>1 ) && (!(s.charAt(i)==('A' | '=' | 'B' | '+' | 'C'))) ){
    System.out.println(s.charAt(i));
 	 }
  }
	}
}

هنا يتم البحث ابتداءً من السطر الثاني وحتى الأخير(تجاهلت استثناء السطر الأخير مؤقتاً)، والمفروض أن يتم إكتشاف الحرف h كحرف غريب عن مجموعة الحروف المسموح بها، ثم طباعته ، أو هكذا اريد أنا، لكن ما يحصل هو طباعة كل شيء !.

هل هناك خطاً في الشرط الذي استخمته في ال if statement يجعل منطق الأمور غير سليم لا يوصل إلى الحرف h أم هناك خصائص معينة لل Boolean Operators في الجافا يجب علي مراعاتها واستحضارها في الشرط الذي اشترطه، خصوصا أني لاحظت أن الكود لا يعمل عند إستخدام || بدلاً من | ؟!،ولما بحثت وجدت أن الأولى تقوم بعمل short circuit evaluation لما هو موجود داخل ال if statement، لكن هل لهذا تأثير على ما أقوم به،أظن لا..!

أخيراً...وأهم ما في الأمر....

أرجو المساعدة... :D

#2

السلام عليكم

لحل سؤالك أخي العزيز يفضل أستخدام طرق بحث المصفوفات أن صح التعبير

كا linear search و binary search

  public class LinearSearch {
public static void main(String[] args){
   
   String [] symbol = {"A","=","B","+","C"};

	String s = "begin\nA=B+C\nA=B+hCC=C-B\nC=end";
   
      for ( int i = 0; i < s.length(); i++ ){
        String search = linearSearch(symbol,s.substring(i,i+1));
        
  // display search result
      if (search  != null )
         System.out.println( search);
        }
   }

   public  static String  linearSearch( String sym[], String str ) 
   {   
      for ( int k = 0; k < sym.length; k++ )
         if ( sym[ k ].equals(str))
            return null;

      return str; 
   }
  }

بالتوفيق

#3

أخي "globaljava"...

شكراً لك كثيراً...قمت بدمج ال Method التي وضعتها أنت في التمرين الذي كنت أقوم به....قد حُلَّت مشكلتي تماماً...وتكاد تكون بشكل نموذجي.... :D ...شكراً لك كثيراً.... :)

هذا الموضوع مغلق.

مواضيع مشابهة