2014-11-24 9 views
6

का उपयोग किए बिना लूप के लिए नेस्टेड से बाहर निकलना मेरी परियोजना आखिरकार पूरी हो गई है, लेकिन मेरी एकमात्र समस्या यह है कि मेरा शिक्षक हमारे कोड में "ब्रेक" स्वीकार नहीं करता है। क्या कोई इस मुद्दे को हल करने में मेरी सहायता कर सकता है, मैं दिन के लिए इस पर काम कर रहा हूं और मैं प्रोग्राम का उपयोग किए बिना काम करने के लिए प्रतीत नहीं कर सकता। ब्रेक मेरे DropYellowDisk और DropRedDisk विधियों में स्थित हैं। अन्य तो उस मुद्दे पर, मेरा कनेक्ट चार प्रोग्राम निर्दोष है।ब्रेक

private static void DropYellowDisk(String[][] grid) { 

     int number = 0; 
     Scanner keyboard = new Scanner (System.in); 
     System.out.println("Drop a yellow disk at column (1–7): "); 
     int c = 2*keyboard.nextInt()+1; 


     for (int i=6;i>=0;i--) 
      { 
       if (grid[i][c] == " ") 
       { 
       grid[i][c] = "Y"; 
       break; 
       }} 
    } 

    private static void DropRedDisk(String[][] grid) { 

     Scanner keyboard = new Scanner (System.in); 
     System.out.print("Drop a red disk at column (1–7): "); 
     int c = 2*keyboard.nextInt()+1; 
     for (int i =6;i>=0;i--) 
      { 
       if (grid[i][c] == " ") 
       { 
       grid[i][c] = "R"; 
       break; 
       } 

    }} 
+1

सबसे आसान तरीका है एक मूल्य है कि 'मैं' घ के हालत के लिए विफल हो जाएगा आवंटित करने के लिए नहीं होना चाहेंगे? यदि आप लूप –

उत्तर

8

मेरे शिक्षक "ब्रेक"

एक प्रोग्रामिंग दृष्टिकोण से स्वीकार नहीं करता है, यह सिर्फ सादे मूर्खतापूर्ण है (हालांकि मुझे यकीन है कि यह एक अनुदेशात्मक एक से योग्यता है हूँ)।

लेकिन इस विशेष मामले में एक आसान कामकाज है क्योंकि आपके break आईएनजी लूप आपके संबंधित तरीकों के अंत में हैं। इस प्रकार, आप उन्हें return कथन के साथ प्रतिस्थापित कर सकते हैं। अर्थात:

private static void DropYellowDisk(String[][] grid) { 

    for (int i=6;i>=0;i--) 
    { 
     if (grid[i][c] == " ") 
     { 
     grid[i][c] = "Y"; 
     return; //break 
     }} 
} 
+9

के बाद कोड डालते हैं तो यह काम करेगा यदि आप शिक्षक ब्रेक स्वीकार नहीं करते हैं, तो 'गोटो' का उपयोग करें और उसे नरक में आश्चर्यचकित करें। – mostruash

+0

'गोटो' का उपयोग करने के लिए यह एक अच्छी शैली नहीं हो सकती है। 'ब्रेक' और 'जारी' वास्तव में उनके जैसे लेबल हैं, विशेष रूप से लेबल के साथ। 'रिटर्न' कथन चक्रवात जटिलता में भी वृद्धि कर सकते हैं, परिणाम को समझने में कठिनाई हो सकती है, इसके बारे में कारण। (मेरा लेना: कोई प्रतिबंध नहीं, लेकिन इसे प्रोत्साहित नहीं करता है।) –

+1

@mostruash [प्रासंगिक] (http://xkcd.com/292/) – ryrich

3

आप while पाश के साथ boolean बजाय ध्वज को तोड़ने का उपयोग कर सकते हैं। इसके अलावा आपको equals विधि से स्ट्रिंग की तुलना करनी चाहिए।

private static void DropYellowDisk(String[][] grid) { 

    int number = 0; boolean flag=true; 
    Scanner keyboard = new Scanner (System.in); 
    System.out.println("Drop a yellow disk at column (1–7): "); 
    int c = 2*keyboard.nextInt()+1; 

     int i=6; 
     while(i>=0&& flag) 
     { 
      if(grid[i][c].equals(" ")) 
      { 
       grid[i][c]="Y"; 
       flag=false; 
      }  
      i--; 
     } 
} 
4
boolean flag = false; 
for (int i=6;i>=0 && !flag;i--) { 
    if (grid[i][c] == " ") { 
     grid[i][c] = "Y"; 
     flag = true; 
    } 
} 
संबंधित मुद्दे