2013-08-26 8 views
5

मैं कैसे args.length का उपयोग करने के साथ भ्रमित हो गया, मैं कुछ यहाँ कोडित हैargs.length और आदेश पंक्ति तर्क

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    for(int i = 0;i<args.length;i++) { 
     System.out.print(a[i]); 
    } 
} 

प्रिंटआउट 0 क्या मूल्य मैं आदेश पंक्ति तर्क में डाल है कोई फर्क नहीं पड़ता, मैं लगता है कि मैं शायद तर्कों के साथ args.length उलझन में [0], कोई समझा सकता है? धन्यवाद।

+1

आप तर्क गलत गुजर जा सकता है। क्या आप हमें दिखा सकते हैं कि आप तर्क कैसे पारित करते हैं? – Cruncher

उत्तर

19

int सरणी (सभी सदस्यों शून्य हो जाएगा) डिफ़ॉल्ट रूप से शून्य करने के लिए आरंभ नहीं हो जाता, 4.12.5. Initial Values of Variables देखें:

प्रत्येक वर्ग चर, उदाहरण चर, या सरणी घटक एक डिफ़ॉल्ट मान के साथ आरंभ नहीं हो जाता है, जब यह बनाई गई है ...

टाइप int के लिए, डिफ़ॉल्ट मान शून्य है, यानी 0 है।

आप सरणी का मान प्रिंट कर रहे हैं, इसलिए आपको 0 मिल रहा है।

क्या आपने ऐसा करने की कोशिश की?

for(int i = 0;i<args.length;i++) { 
    System.out.print(args[i]); 
} 

argsकमांड लाइन तर्क है कि कार्यक्रम के लिए पारित कर रहे हैं शामिल हैं।
args.length तर्कों की लंबाई है। उदाहरण के लिए यदि आप चलाएँ:

java myJavaProgram first second 

args.length 2 हो जाएगा और यह ["first", "second"] शामिल करेंगे।

+0

हाय मारौन, आपकी मदद के लिए धन्यवाद! –

+0

तो तर्क "args.length" में क्या मतलब है? क्या यह लंबाई के लिए सरणी या तर्क का यादृच्छिक नाम है? –

+0

मेरा संपादन देखें .... – Maroun

1

args[0]args सरणी का पहला तत्व है।

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    // Parse int[] from String[] 
    for (int i = 0; i < args.length; i++){ 
     a[i] = Interger.parseInt(args[i]); 
    } 

    for (int i = 0; i < args.length; i++){ 
     System.out.print(a[i]); 
    } 
} 
2

मुझे लगता है कि आप एक कोड है कि ints को स्ट्रिंग्स धर्मान्तरित भूल रहे हैं की लंबाई है। आपको कोशिश करनी चाहिए:

public static void main(String[] args) { 
     for(int i = 0;i<args.length;i++){ 
      System.out.print(args[i]); 
     } 
} 
+0

क्या होगा यदि * arg [n] * कोई संख्या नहीं है? क्या आप इसे पकड़ने की कोशिश कर सकते हैं? – Fernando

+0

@ फ़र्नान्डो हां - यह 'संख्याफॉर्मेट अपवाद' (एक 'रनटाइम अपवाद') फेंक देगा यदि स्ट्रिंग में एक पारदर्शी पूर्णांक – Bohemian

1

a सरणी आप पर पुनरावृति args कि वास्तविक बहस में शामिल नहीं है: args.length सरणी

+0

नहीं है तो तर्क "args.length" में क्या अर्थ है? क्या यह लंबाई के लिए सरणी या तर्क का यादृच्छिक नाम है? –

+0

यह मुख्य विधि पैरामीटर का नाम है। – Guillaume

0

आपके द्वारा गुजरने वाले बहस तर्क सरणी में संग्रहीत हैं और आपके तथाकथित सरणी नहीं हैं। डिफॉल्ट रूप से एक उचित रूप से घोषित सरणी अगर प्रारंभ नहीं किया गया है तो इसके डेटाटाइप के डिफ़ॉल्ट मान लेते हैं। आपके मामले में 0.

ताकि आप

public static void main(String[] args) { 
for(int i = 0;i<args.length;i++){ 
System.out.print(args[i]); 
} 
} 

करते हैं या आर्ग के साथ सरणी एक आरंभ कर देगा।

0

तर्क।लंबाई = 0 है;

आप इस उत्पादन के लिए देख रहे हैं:

args [0]: शून्य
args [1]: एक
args [2]: दो
args [3]: तीन

यहाँ

उदाहरण है ...

public static void (String [] args) {

सरणी नाम के साथ

// सरणी "आर्ग" स्ट्रिंग [] arg = {"शून्य", "एक", "दो", "तीन"};

 for(int i=0; i<arg.length ;++i) 
     { 
      System.out.println("args["+i+"]:"+arg[i]); 
     } 
    } 
    } 

आप .. सरणी लंबाई देने के लिए

+2

मुझे नहीं लगता कि यह सवाल का जवाब देता है लेकिन मुझे यह भी यकीन नहीं है कि मैं समझ रहा हूं कि आप क्या सुझाव दे रहे हैं, क्या आप स्पष्टीकरण दे सकते हैं? साथ ही, कोड के रूप में सभी कोड प्रारूपित करें। – blm

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