यदि आप पूछ रहे हैं कि अनंत लूप उपयोगी हो सकते हैं, तो जवाब हाँ है। ऐसी कई स्थितियां हैं जहां आप हमेशा कुछ चलाना चाहते हैं, हालांकि लूप आमतौर पर किसी बिंदु पर समाप्त हो जाएगा।
आपके प्रश्न के अनुसार: "जब जावा एक लूप अनंत होगा तो जावा पहचान सकता है?" जवाब यह है कि कंप्यूटर के लिए एक एल्गोरिदम होना असंभव है यह निर्धारित करने के लिए कि कोई प्रोग्राम हमेशा के लिए चलाएगा या नहीं। इसके बारे में पढ़ें: Halting Problem
थोड़ा और पढ़ना, आपका प्रश्न यह भी पूछ रहा है कि क्यों करना कुछ() फ़ंक्शन शिकायत नहीं करता है कि यह एक int वापस नहीं कर रहा है।
दिलचस्प बात यह है कि निम्न स्रोत संकलित नहीं होता है।
public class test {
public static int doSomething() {
//while(true);
boolean test=true;
while(test){
}
}
public static void main(String[] args) {
doSomething();
}
}
यह मेरे लिए इंगित करता है कि, के रूप में हॉल्टिंग समस्या पर विकि पृष्ठ पता चलता है, यह असंभव है निर्धारित करने के लिए करता है, तो हर समस्या को समाप्त कर देगा एक एल्गोरिथ्म होने के लिए वहाँ के लिए है, लेकिन यह मतलब नहीं है कि किसी को नहीं जोड़ा गया है साधारण मामला:
while(true);
जावा स्पेक में। मेरा उदाहरण ऊपर थोड़ा जटिल है, इसलिए जावा को इसे अनंत लूप के रूप में याद नहीं किया जा सकता है। वास्तव में, यह एक अजीब बढ़त का मामला है, लेकिन चीजों को संकलित करने के लिए बस वहां है। शायद कोई अन्य संयोजनों का प्रयास करेगा।
संपादित करें: पहुंचने योग्य कोड के साथ कोई समस्या नहीं।
import java.util.*;
public class test {
public static int doSomething() {
//while(true);
while(true){
System.out.println("Hello");
}
}
public static void main(String[] args) {
doSomething();
}
}
उपर्युक्त काम, तो जबकि (सत्य); संकलक द्वारा पहुंचने योग्य के रूप में अनदेखा नहीं किया जा रहा है, अन्यथा यह एक संकलन समय त्रुटि फेंक देगा!
आपको 'सत्य (सत्य) के बाद 'वापसी 0;' (या समतुल्य) की आवश्यकता नहीं होगी; ', बस कंपाइलर को खुश करने के लिए? मुझे पता है कि मैंने जावा शिकायत की है कि विधियां पहले सही प्रकार को वापस नहीं करती हैं। ... कहा जा रहा है, मैं पूरी तरह से एक संकलन कार्यक्रम होने के नाते देख सकते हैं। –
बहुत रोचक ... मुझे आश्चर्य हुआ कि यह वास्तव में संकलित है। – cjstehno