2013-02-27 129 views
5
*  
    ***** 
********* 
********* 
**** *** 
**** *** 

की तरह दिखना चाहिए अब तक मैं केवल इसमेरा असाइनमेंट लूप के लिए घर बनाने के लिए है। घर इस

for (int i=1; i<10; i += 4) 
    { 

     for (int j=0; j<i; j++) 
     { 
     System.out.print("*"); 
     } 
     System.out.println(""); 
    } 
    } 
} 
+0

आपके कोड की धारणाएं क्या हैं? क्या आप उपयोगकर्ता से ऊंचाई और घर की चौड़ाई इनपुट करने के लिए कहेंगे? या वे केवल 1 तरफ देने की जरूरत है? या पक्ष पहले से ही दिए गए हैं? – Arci

+0

@ माइकल क्योंकि इसके लिए कई समाधान हैं ... हमें अपने प्रतिबंधों को जानें जैसे कि _for loops_ की अनुमति या अन्य –

उत्तर

0

मुझे लगता है कि आंद्रे के जवाब सबसे संक्षिप्त एक है, लेकिन अगर आप विन्यास घर निर्माण आप अगले एक का उपयोग कर सकते हैं करना चाहते हैं (ऊँचाई/चौड़ाई परिवर्तित करने का प्रयास प्रभाव देखने के लिए):

public class House { 

    public static void main(String[] args) { 
     final int HEIGHT = 6; 
     final int WIDTH = 9; 

     for (int i = 0; i < HEIGHT * 2; i += 2) { 
      for (int j = 0; j < WIDTH; j++) {// check for roof 
       if ((i + (i % 2) + (WIDTH)/2) < j // right slope 
         || (i + (i % 2) + j) < (WIDTH)/2)// left slope 
       { 
        System.out.print(" "); 
       } else { 
        if ((i/2 >= HEIGHT * 2/3) && (j >= WIDTH/2) && j < WIDTH/2 + HEIGHT/3) {// check for door 
         System.out.print(" "); 
        } else {// solid then 
         System.out.print("*"); 
        } 
       } 
      } 
      System.out.println(); 
     } 

    } 
} 

संपादित - जवाब टिप्पणी करने के लिए: अगले दो उदाहरण चलाने के लिए प्रयास करें और तुलना उत्पादन:

public static void main(String[] args) { 
    final int SIZE = 9; 
    for (int i = 0; i < SIZE; i++) { 
     for (int j = 0; j < SIZE; j++) { 
      System.out.print(i < j ? "+" : "-"); 
     } 
     System.out.println(); 
    } 
} 

और

public static void main(String[] args) { 
    final int SIZE = 9; 
    for (int i = 0; i < SIZE; i++) { 
     for (int j = 0; j < SIZE; j++) { 
      System.out.print(i < SIZE - j - 1 ? "+" : "-"); 
     } 
     System.out.println(); 
    } 
} 

पहले एक तुम सही ढलान दे देंगे और दूसरा एक छोड़ दिया है। यह सब अंक के ज्यामितीय गुणों से आते हैं। पहले मामले में वाई अक्ष पर की तुलना में एक्स अक्ष पर सभी बिंदुओं का बड़ा मूल्य होगा। दूसरे में x और y दोनों योग में SIZE से अधिक नहीं होंगे।

आप if() कथन के अंदर बूलियन अभिव्यक्ति को संशोधित करने का प्रयास कर सकते हैं और देखें कि क्या होता है, लेकिन मैं आपको कागज़ का टुकड़ा पाने के लिए प्रोत्साहित करता हूं और कागज और कलम के साथ खेलने की कोशिश करता हूं और देखता हूं कि कुछ बिंदुओं के गुण क्या हैं। अगर आपको और स्पष्टीकरण की आवश्यकता है तो मुझे बताएं।

+0

बहुत धन्यवाद। क्या आप कोड को थोड़ा और समझा सकते हैं और आप इन प्रकार की समस्याओं से कैसे संपर्क करेंगे? क्योंकि मैं भविष्य में इस तरह की कई समस्याओं का सामना कर रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि मुझे यह पता चल जाए कि इसे कैसे किया जाए। –

+0

मैंने दो और बुनियादी नमूने जोड़े। –

0

है आप इस तरह एक दो आयामी सरणी इस्तेमाल कर सकते हैं:

char matrice [][]= {{' ',' ',' ',' ' '*', ' ',' ',' ',' '}, 
     {' ',' ','*','*', '*', '*','*',' ',' '}}; 

(और इसी तरह)। आप मूल रूप से अपने सरणी इंडेक्स का उपयोग करके अपने घर को आकर्षित करते हैं।

अब आप System.out.print() का उपयोग करके प्रत्येक पंक्ति को पार्स कर सकते हैं जब आपको प्रत्येक पंक्ति के बीच एक वर्ण, और System.out.println ("") मुद्रित करना होता है।

यह इस तरह दिखेगा:

for(char[] line : house){ 

    for(char d : line){ 
     System.out.print(d); 
    } 

    System.out.println(""); 

} 

आप for-each statement documentation पर एक नज़र डालें यदि आप इसे से परिचित नहीं हैं चाहिए।

2

सरल निर्णय हो जाएगा:

for (int y = 0; y < 6; y++) { 
     int shift = y < 2 ? 4/(y + 1) : 0; 
     for (int x = 0; x < 9 - shift; x++) System.out.print(x >= shift && (y < 4 || (x < 4 || x > 5)) ? "*" : " "); 
     System.out.println(); 
    }