2011-11-03 17 views
5

से बाहर निकलने पर जावा सरणी खो जाती है, मैं जावा के लिए अपेक्षाकृत नया हूं, और पॉइंटर्स के बिना संदर्भ द्वारा गुजरने से मुझे थोड़ा उलझन आता है। मैंने होमवर्क के लिए एक फ़ंक्शन लिखा है जिसके लिए मुझे उपयोगकर्ता इनपुट की लंबाई वापस करने की आवश्यकता है, और जब उपयोगकर्ता इनपुट सरणी से बाहर निकलता है, तो क्या गलत है।विधि

public static int readArray(char[] intoArray) 
    { 
     char[] capture = captureInputAsCharArray(); //User input comes back as char[] 
     System.arraycopy(intoArray,0, capture, 0, capture.length); 

     return capture.length; 
    } 

public static main(String[] args) 
{ 
     size = readArray(arrItem7); // item 7 
     System.out.println(size); 
     printOneInLine(arrItem7); // prints individual elements of array 
} 
+1

आप arrItem7 कहां घोषित करते हैं? – lc2817

+0

जावा को ऑब्जेक्ट पास करने के तरीके को समझने के लिए यह पोस्ट देखें: http://stackoverflow.com/questions/7893492/is-java-really-passing-objects-by-value/7893495#7893495 –

+3

वह उन्हें ठीक से गुजर रहा है। वह सिर्फ उन्हें 'arraycopy' –

उत्तर

7

क्योंकि आपके पास System.arraycopy() के पीछे तर्क हैं।

http://download.oracle.com/javase/6/docs/api/java/lang/System.html

public static void arraycopy(Object src, 
          int srcPos, 
          Object dest, 
          int destPos, 
          int length) 

स्वैप intoArray और capture:

System.arraycopy(capture,0, intoArray, 0, capture.length); 
+1

+1 वास्तविक समस्या की पहचान के लिए +1 –

+0

अच्छा बिंदु, युवा पैडवान! – DarthVader

-2

संदर्भ स्वयं मूल्य से पारित किया जाता है। इस मामले में, आपको लंबाई के बजाय खुद को बहुत सरणी (capture) वापस करनी चाहिए।

0

तुम क्या (उपयोगकर्ता इनपुट मिलता है और इसके आकार वापसी) करना चाहते करने के लिए, आप यह कर सकते हैं:

import java.util.*; 


class Main{ 
    public static void main(String argv[]) 
    { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter something"); 
    String line = sc.nextLine(); 
    char [] my_array = line.toCharArray(); 
    System.out.println("You entered an input of length "+line.length()); 
    } 

} 

और यह यह देगा:

$ java Main 
Enter something 
Hello 
You entered an input of length 5 
+0

वह नहीं है जो उन्होंने अपना होमवर्क आवश्यक बताया ... –

+0

ठीक है, अभी क्या? – lc2817

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