2010-10-16 14 views
7
System.out.print("Enter an integer: "); 
Scanner sc = new Scanner(System.in); 

int x = sc.nextInt(); 
int lArray = x - 2; 
int[] newArray = new int[lArray]; 

System.out.println("Let's display all possible integers..."); 
for (int i = 0; i <= newArray.length; i++) { 
    newArray[i] = i + 2; 
    System.out.print(newArray[i] + " "); 
} 

मैंने हाल ही में जावा शुरू किया है, लेकिन मुझे यकीन है कि अगर मैंने दूसरी भाषा में समान रूप से कोड किया है, तो मुझे एक ही समस्या का सामना करना पड़ेगा। यह किसी एप्लिकेशन से एक अंश है जहां यह उपयोगकर्ता के इनपुट तक सभी प्रमुख संख्याओं को सूचीबद्ध करता है।जावा: बाउंड अपवाद से बाहर एरे इंडेक्स

कारण x-2 का प्रयोग lArray की परिभाषा के रूप में किया जाता है क्योंकि सरणी की लंबाई 2 से 2, 3, 4, 4, 5 ... x} तक सभी पूर्णांक होगी।

मैंने देखा है कि लाइन

for (int i = 0; i <= newArray.length; i++) { 

अगर मैं i <= newArray को बदलने के लिए, कोड त्रुटि के बिना काम करता है। हालांकि, उपयोगकर्ता का इनपुट, एक्स, छोड़ा गया है, यदि एक्स प्रमुख है तो कोई समस्या है।

उत्तर

6

आप < और नहीं <= में उपयोग करना चाहिए:

for (int i = 0; i <= newArray.length; i++) 
        ^^ 

तो foo किसी भी सरणी, foo की वैध सूचकांक [0,foo.length-1]

foo.length का प्रयोग के रूप में एक सूचकांक ArrayIndexOutofBoundsException कारण होगा रहे हैं।

और यह भी lArray जो प्राकृतिक संख्या <=x की संख्या लेकिन छोड़कर केवल एक संख्या 1 होता है, अपने मूल्य x-1 और नहीं x-2 होना चाहिए।

5

सरणी लंबाई को (x - 1) पर बदलें, और < स्थिति के साथ जाएं, जिसे आप पहले ही पा चुके हैं, बाहर के अपवाद से बचने के लिए आवश्यक है।

कारण आपको उस सरणी की आवश्यकता है जो वर्तमान में आप जो उपयोग कर रहे हैं उससे 1 तत्व बड़ा है क्योंकि (n - 1) उम्मीदवार हैं जिन्हें 2 और एन, (n - 2) के बीच नहीं माना जाना चाहिए।

उदाहरण के लिए, दो उम्मीदवार तीन (2 और 3) से कम या बराबर हैं, जिनमें से दोनों संयोग से, प्राइम होते हैं।

int lArray = x - 1; 

और < बजाय <= उपयोग करने के लिए अपनी हालत बदलने के लिए:

+0

+1 दोनों समस्याओं को ध्यान में रखते हुए +1 –

1

आप प्रयोग करना होगा।

जावा में सी/सी ++ में, सरणी शून्य आधारित हैं। तो एन मूल्यों की आपकी सरणी सूचकांक से एन -1 से जाएगी।

अपना उदाहरण लेना: {2, 3, 4, 5... x}

आपको सभी सकारात्मक संख्याओं को स्टोर करने के लिए N-1 मानों की आवश्यकता होगी लेकिन एक पूर्णांक सरणी में।तो, अगर N के बराबर होती है, अपने सरणी होगा:

newArray[0] = 2; 
newArray[1] = 3; 
newArray[2] = 4; 

इसलिए, सरणी लंबाई होना चाहिए (N-1)।

3
for (int i = 0; i <= newArray.length; i++) //should be <, not <= 
for (int i = 0; i < newArray.length; i++) 
संबंधित मुद्दे