السلام عليكم ورحمة الله تعالى وبركاته...
أعمل على كود لكن واجهتني المشكلة التالية:
أريد القراءة من 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