2011-09-10 16 views
5

मैं जावा में नया हूं और मुझे यकीन नहीं है कि मैं नीचे दिए गए कोड में डीओ WHILE लूप को कैसे तोड़ सकता हूं? मैंने सोचा कि मैं लूप जारी रखने के लिए -1 तोड़ने या अन्य सभी नंबरों में प्रवेश कर सकता हूं।लूप जावा जबकि ब्रेक डीओ?

import javax.swing.*; 
public class Triangel { 

public static void main(String[] args) { 

int control = 1; 

while (control == 1){ 

    String value = JOptionPane.showInputDialog("Enter a number or -1 to stop"); 

    if(value == "-1"){ 
     control = 0; 
    } 
System.out.println(value); 
} 

} 

}

+3

यह नहीं है एक 'है ... WHILE' लूप, यह एक 'WHILE' लूप है। आप लूप के अंदर कहीं भी 'ब्रेक' जारी करके इसे तोड़ते हैं। – Shef

+0

त्रिभुज: http://www.beedictionary.com/common-errors/angel_vs_angle – zengr

उत्तर

9

तुम इतनी तरह == के बजाय .equals() उपयोग करने के लिए, की जरूरत है:

if (value.equals("-1")){ 
    control = 0; 
} 

जब आप का उपयोग == आप संदर्भ समानता के लिए जाँच कर रहे हैं (यानी है यह एक ही सूचक), लेकिन जब आप .equals() का उपयोग करते हैं तो आप मूल्य समानता की जांच कर रहे हैं (यानी वे एक ही चीज़ को इंगित करते हैं)। आमतौर पर .equals() सही विकल्प है।

तुम भी तो की तरह एक पाश बाहर निकलने के लिए, break उपयोग कर सकते हैं:

while(true) { 
    String value = JOptionPane.showInputDialog("Enter a number or -1 to stop"); 
    System.out.println(value); 
    if ("-1".equals(value)) { 
     break; 
    } 
} 
+1

मैं थोड़ा उलझन में हूं क्यों यह सिर्फ == के साथ काम नहीं करता है? –

+3

== संदर्भ समानता के लिए एक वस्तु की तुलना करता है, यानी, क्या वे * सटीक * एक ही वस्तु का संदर्भ लेते हैं? अगर मेरे पास एक संरचना है जो पूर्णांक रखती है, और मैं नई संरचना (4) == नई संरचना (4) कहता हूं, यह गलत होगा क्योंकि यद्यपि मैंने दोनों ऑब्जेक्ट्स में संरचना के पूर्णांक को 4 में प्रारंभ किया है, वे अलग-अलग ऑब्जेक्ट्स हैं। हालांकि, अगर मैं अधिभार (और हैशकोड, javadocs देखें) ठीक से, नया संरचना (4) .equals (नया संरचना (4)) सच प्रिंट करेगा - भले ही वे अलग-अलग वस्तुएं हों, वे उनके अनुसार एक ही चीज हैं अनुबंध बराबर है। – MetroidFan2002

3

आप break उपयोग कर सकते हैं:

while (true) { 
    ... 
    if ("-1".equals(value)) { 
     break; 
    } 
    ... 
} 
+0

'==' लेकिन 'equals' के बजाय तारों की तुलना न करें। – Howard

+0

ओह क्षमा करें - यह नहीं देखा गया कि यह जावा था, सोचा C# –

5

आप जब तार की तुलना String.equals() विधि का उपयोग करने की जरूरत है। आपका value == "-1" कोड संदर्भ समानता जाँच कर रहा है, नहीं मूल्य समानता

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