2013-07-31 22 views
10

के अंदर एक रिटर्न स्टेटमेंट डाल सकता हूं क्या मुझे switch कथन प्राप्त करने की अनुमति है जो तय करता है कि क्या लौटना है? उदाहरण के लिए मैं अपने random generator के साथ आने के आधार पर कुछ अलग करना चाहता हूं। ग्रहण मुझे switch के बाहर return कथन डालने के लिए मुझे एक त्रुटि दे रहा है। निश्चित नहीं है कि यह कितना खेद है यदि यह एक डुप्लिकेट है। यहाँ मेरी कोड है:क्या मैं एक स्विच स्टेटमेंट

public String wordBank() { //Error here saying: "This method must return a type of string" 
     String[] wordsShapes = new String[10]; 
     wordsShapes[1] = "square"; 
     wordsShapes[2] = "circle"; 
     wordsShapes[3] = "cone"; 
     wordsShapes[4] = "prisim"; 
     wordsShapes[5] = "cube"; 
     wordsShapes[6] = "cylinder"; 
     wordsShapes[7] = "triangle"; 
     wordsShapes[8] = "star"; 
     wordsShapes[9] = "moon"; 
     wordsShapes[10] = "paralellogram"; 

     Random rand = new Random(); 
     int i = rand.nextInt(11); 

     if (i == 0) { 
      i = rand.nextInt(11); 
     } 

     switch (i) { 
     case 1: 
      return wordsShapes[1].toString(); 
     case 2: 
      return wordsShapes[2].toString(); 
     case 3: 
      return wordsShapes[3].toString(); 
     case 4: 
      return wordsShapes[4].toString(); 
     case 5: 
      return wordsShapes[5].toString(); 
     case 6: 
      return wordsShapes[6].toString(); 
     case 7: 
      return wordsShapes[7].toString(); 
     case 8: 
      return wordsShapes[8].toString(); 
     case 9: 
      return wordsShapes[9].toString(); 
     case 10: 
      return wordsShapes[10].toString(); 
     } 
    } 
+0

संभावित डुप्लिकेट [रिटर्न के साथ स्विच स्टेटमेंट - कोड शुद्धता] (http://stackoverflow.com/questions/3065438/switch-statement-with-returns-code-correctness) –

उत्तर

8

क्षमा करें, लेकिन उस मामले में, क्यों नहीं बस कार्य करें:

इस तरह आप स्विच और सभी से बच सकते हैं।

आशा है कि मदद करता है,

2

समस्या नहीं आप switch बयान के अंदर बयान है, जो पूरी तरह से ठीक हैं वापसी की है कि है, लेकिन आप कोई वापसी स्विच बयान के बाद की है। यदि आपका स्विच स्टेटमेंट लौटने के बिना पूरा हो जाता है, तो अब क्या होगा?

जावा के नियमों की आवश्यकता है कि मूल्य-वापसी समारोह के माध्यम से सभी पथ return कथन का सामना करें। आपके मामले में, भले ही आप जानते हैं कि i का मान हमेशा एक मान का होगा जो स्विच से return का कारण बनता है, जावा कंपाइलर यह निर्धारित करने के लिए पर्याप्त स्मार्ट नहीं है।

(एक तरफ: वैसे, आप वास्तव में बनने से मान 0 से नहीं रोका; हो सकता है आपके if एक while होना चाहिए।)

परिशिष्ट: मामले में आप रुचि रखते हैं, यहाँ एक कार्यान्वयन है। लाइव उदाहरण के लिए http://ideone.com/IpIwis देखें।

import java.util.Random; 
class Main { 
    private static final Random random = new Random(); 

    private static final String[] SHAPES = { 
     "square", "circle", "cone", "prism", "cube", "cylinder", "triangle", 
     "star", "moon", "parallelogram" 
    }; 

    public static String randomShapeWord() { 
     return SHAPES[random.nextInt(SHAPES.length)]; 
    } 

    public static void main(String[] args) { 
     for (int i = 0; i < 20; i++) { 
      System.out.println(randomShapeWord()); 
     } 
    } 
} 

फ़ंक्शन के बाहर परिभाषित यादृच्छिक संख्या जेनरेटर रखने का सबसे अच्छा अभ्यास नोट करें।

+0

वहां कोई और नहीं है कथन मुझे उपयोग करना चाहिए या सिर्फ 'शून्य वापस' करना चाहिए? – Col1107

+2

जावा में एक 'डिफ़ॉल्ट' मामला है। हालांकि, आप जो करते हैं उसके लिए रामन का जवाब देखें। :) –

+0

अगर कथन को पकड़ने के बारे में नोट के लिए धन्यवाद:) – Col1107

3

आप returnswitch अंदर डाल सकते हैं, लेकिन आप इस मामले में switch उपयोग करने की आवश्यकता नहीं है।

0

रिटर्न स्टेटमेंट पूरे फ़ंक्शन से वापस आ जाएगा, जिसका उपयोग किया जाता है। इसलिए मुझे लगता है कि यह अच्छा है कि स्विच में वापसी कथन का उपयोग करना चाहते हैं तो स्विच के नीचे कोड की कोई अन्य उपयोगी लाइन नहीं होनी चाहिए।

संबंधित मुद्दे