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

مشكلة في for loop

بدأه sunn في 3 أبريل 2011 · 5 رد · 444 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ياريت تشوفولي هالكود وتقولولي ليش المتغير d في ال for loop الثانية قيمته ما بتتغير وتبقى صفر

/**
 * @(#)test.java
 *
 *
 * @author 
 * @version 1.00 2011/4/3
 */


public class test {
static  char vertex_array2[]={'A','B','C','D','E'};
static  char vertex_array1[]={' ','A','B','C','D','E'};

   public static void main (String[] args) {
   	System.out.print(isCycle('B','C',5,'B'));
}
public static  char isCycle(char x,char y,int size,char f){

    	if(y==f)
    		return 't';

    		int n=0;
    		for(int i=0;i<vertex_array2.length;i++){
    			if(vertex_array2==y){

    				n=i;
    				break;
    		}
    		}//for i	
    			for(int v=n;v<size;v++){
    				int d=0;
    				while(d<size){
    					if(y!='0'||y!='?'){
    						System.out.print("j  "+d);
    						char found=vertex_array1[d+1];
    					//	System.out.print("found  "+found);
    					//	m=size;j=size;
    						return isCycle(y,found,size,f);

    					}//if
    					d++;
    					//else j+=1;
    				}//for j
    			}//for m
    			return 'f';
    	}//iscycle



}
#2

حسنا أخي لا ادري لماذا وضعت هذا السطر في الكود

  return isCycle(y,found,size,f);

فهو مصدر الخطأ

على كل الحال الكود الصحيح كمايلي:

public class test {
	static  char vertex_array2[]={'A','B','C','D','E'};
	static  char vertex_array1[]={' ','A','B','C','D','E'};

	   public static void main (String[] args) {
	        System.out.print(isCycle('B','C',5,'B'));
	}
	public static  char isCycle(char x,char y,int size,char f){

	        if(y==f)
	                return 't';

	                int n=0;
	                for(int i=0;i<vertex_array2.length;i++){
	                        if(vertex_array2==y){

	                                n=i;
	                                break;
	                }
	                }//for i        
	                        for(int v=n;v<size;v++){
	                                int d=0;
	                                while(d<size){
	                                        if(y!='0'||y!='?'){
	                                                System.out.print("j  "+d);
	                                                char found=vertex_array1[d+1];
	                                        //      System.out.print("found  "+found);
	                                        //      m=size;j=size;


	                                        }//if
	                                        d++;
	                                        //else j+=1;
	                                }//for j
	                        }//for m
	                        return 'f';
	        }//iscycle

بالتوفيق

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#3

مشكور اخي على اجابتك بس الامر اللي انت حذفته انا وضعته لاتني بدي الميثود يكون recursion

#4

لكن الـ recursion لا تكون بهذا الشكل وهذا غلط 100%

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#5

هذا السطر لا يوجد به مشكلة، فالغرض منه هو استخدام الـ recursion

return isCycle(y,found,size,f);

ولكن المشكلة هي أنك لم تضع شرط بحيث الـ method تكتفي عن استدعاء نفسها بعد عدد من المرات، لذلك لو قمت بتتبع البرنامج ستجد أنه سيدخل في loop لا نهائية

1
597657.png
#6

الاخ فيكتور شو هو الغلط لا اعتقد انه هنالك خطأ في الريكيرجن

الاخ فؤاد انا وضعت شرط للتوقف وهو (if( y==f

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