2015-11-04 8 views
6

निम्नलिखित कार्यक्रम में जाना जाता है इंटेलीजेइंटेलीजे - चेतावनी संदेश हालत i> = 2 जब मैं

public static void main(String[] args) { 
    int i = 0; 
    if (i <= 2) { 
     System.out.println("ok"); 
    } 
} 

मुझे चेतावनी दी है के लिए प्रकट नहीं होता है "स्थिति 'मैं < = 2' हमेशा 'सही' है।" यदि मैं i > 2 के साथ स्थिति को प्रतिस्थापित करता हूं, तो मुझे "हालत 'i> 2' हमेशा 'झूठी' मिलती है। i == 2 के साथ ही।

लेकिन अगर मैं इसे i >= 2 से प्रतिस्थापित करता हूं तो मेरे पास कोई चेतावनी नहीं है।

अंतिम मामले में क्यों IntelliJ मुझे चेतावनी नहीं देता है कि यह स्थिति हमेशा झूठी है?

मैं इंटेलिजे 14.1.5 का उपयोग कर रहा हूं और संकलक का उपयोग अपने 1.8.0_51 संस्करण में जावैक है।

enter image description here

+5

Intellij नहीं एक जावा मुद्दे को लागू करने में एक गलती की तरह लगता है। मैं जेटब्रेन को इसकी रिपोर्ट करने की सलाह दूंगा। –

+3

मुझे नहीं लगता कि कोई गहरा कारण है। यह सिर्फ एक बग होना चाहिए, लेकिन यह एक अजीब बात है। अगर मैं 'int i = 5 करता हूं; अगर (i <= 2) 'मुझे चेतावनी नहीं मिली है। –

+0

शायद https://youtrack.jetbrains.com/issue/IDEA-146950 –

उत्तर

3

तरह पॉल Boddington एक टिप्पणी में कहा चुनते हैं, तो यह है की कोशिश वास्तव में कुछ जेटब्रेन अपने एल्गोरिदम में कार्यान्वित करना भूल गए हैं, जो fixed a few days ago रहा है।

से पहले:

if (opSign == LT && comparedWith <= rangeMin) return alwaysFalse(instruction, runner, memState); 
if (opSign == LT && comparedWith > rangeMax) return alwaysTrue(instruction, runner, memState); 
if (opSign == LE && comparedWith >= rangeMax) return alwaysTrue(instruction, runner, memState); 

if (opSign == GT && comparedWith >= rangeMax) return alwaysFalse(instruction, runner, memState); 
if (opSign == GT && comparedWith < rangeMin) return alwaysTrue(instruction, runner, memState); 
if (opSign == GE && comparedWith <= rangeMin) return alwaysTrue(instruction, runner, memState); 

के बाद:

if (opSign == LT && comparedWith <= rangeMin) return alwaysFalse(instruction, runner, memState); 
if (opSign == LT && comparedWith > rangeMax) return alwaysTrue(instruction, runner, memState); 
if (opSign == LE && comparedWith >= rangeMax) return alwaysTrue(instruction, runner, memState); 
if (opSign == LE && comparedWith < rangeMin) return alwaysFalse(instruction, runner, memState); 

if (opSign == GT && comparedWith >= rangeMax) return alwaysFalse(instruction, runner, memState); 
if (opSign == GT && comparedWith < rangeMin) return alwaysTrue(instruction, runner, memState); 
if (opSign == GE && comparedWith <= rangeMin) return alwaysTrue(instruction, runner, memState); 
if (opSign == GE && comparedWith > rangeMax) return alwaysFalse(instruction, runner, memState); 

संगत मुद्दा: https://youtrack.jetbrains.com/issue/IDEA-146950

1

यह एक सप्ताह पहले इसलिए इसकी अजीब मैं इस पर यहाँ भी जल्द ही के बाद देखा था के बारे में मेरे ध्यान में लाया गया था। मैंने इसे देखा और यह इंटेलिज 10 के रूप में जल्द ही हो रहा था। इसके सभी अपडेट में इसके लिए कुछ बग फिक्स थे लेकिन समस्या स्पष्ट रूप से तय नहीं की गई है।

यहां एक लिंक है जहां जेटब्रेन बग को संदर्भित करता है। कई मामले हैं। IDEA-84489

अपने आपको परेशान कर रहा है, तो Alt के माध्यम से चेतावनी को दबा + जबकि अपने कर्सर यह खत्म हो गया है दर्ज करें और विकल्प है कि कहते हैं, "को दबाने के लिए ..."

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