6

में कमांड लाइन में * समस्या का उपयोग करना मामूली है, लेकिन मुझे यहां कुछ बहुत ही बुनियादी चीजें याद आ रही हैं और इसे पकड़ने में असमर्थ है। कृपया मदद करे। मैं कमांड लाइन पर काम करने के लिए एक सरल कैलकुलेटर प्रोग्राम लिख रहा हूं। स्रोत कोड नीचे दिया गया है। "002.java" बयान में args [2] से दूसरे पूर्णांक को पार्स:जावा प्रोग्राम

जब मैं के रूप में

>java SwitchCalc 12 * 5 

यह एक इनपुट स्ट्रिंग के लिए 'java.lang.NumberFormatException को फेंक देता कैलकुलेटर का उपयोग समस्या है

int value2 = Integer.parseInt(args[2]) 

बाद में मैंने निम्नलिखित की कोशिश की, यह काम किया।

>java SwitchCalc 12 "*" 5 
12 * 5 = 60 

मुझे क्या याद आ रही है?

/* 
User will input the expression from command-line in the form: 
>java SwitchCalc value1 op value2 
where, 
value1, and value2 are integer values 
op is an operator in +, -, *, /, % 
Program will evaluate the expression and will print the result. For eg. 
>java SwitchCalc 13 % 5 
3 
*/ 

class SwitchCalc{ 
    public static void main(String [] args){ 
     int value1 = Integer.parseInt(args[0]), 
      value2 = Integer.parseInt(args[2]), 
      result = 0; 

     switch(args[1]){ 
      case "+": 
       result = value1 + value2; 
       break; 
      case "-": 
       result = value1 - value2; 
       break; 
      case "*": 
       result = value1 * value2; 
       break; 
      case "/": 
       result = value1/value2; 
       break; 
      case "%": 
       result = value1 % value2; 
       break; 
      default: 
       System.out.printf("ERROR: Illegal operator %s.", args[1]); 
       break; 
     } 

     System.out.printf("%d %s %d = %d", value1, args[1], value2, result); 
     //System.out.println(value1 + " " + args[1] + " " + value2 + " = " + result); 
    } 
} 
+1

क्या आप कुछ भी निष्पादित करने से पहले सभी तर्क मुद्रित करने का प्रयास कर सकते हैं? –

+3

यह जावा के साथ नहीं है - यह आपका खोल वाइल्डकार्ड विस्तार कर रहा है। मुझे लगता है कि आपके पास दो या दो से अधिक फ़ाइलें हैं, जिनमें से एक को '002.java' कहा जाता है, जिस निर्देशिका से आप इस कोड को चला रहे हैं। –

+0

मैंने अभी निम्नलिखित कोड के साथ प्रयास किया है: 'के लिए (int i = 0; i

उत्तर

6

* एक वाइल्डकार्ड है जिसका खोल खोलने का एक विशेष अर्थ है। यह कार्यक्रम में भी पारित होने से पहले विस्तारित किया जाता है।

आपके मामले में, तारांकन को निर्देशिका में सभी फ़ाइलों के नाम से बदल दिया गया है, जिनमें से पहला 002.java लगता है। दिए गए अपवाद में एक इंटीजर परिणामों में इस स्ट्रिंग को पार्स करने का प्रयास कर रहा है।

इसे "*" उद्धरण चिह्नों में लपेटकर, इसे खोल द्वारा शाब्दिक माना जाता है और बस इस कार्यक्रम को पास किया जाता है। आप जिस शेल का उपयोग कर रहे हैं उसके आधार पर, आपको \* बैकस्लैश के साथ तारांकन से बचने में भी सक्षम होना चाहिए।

Wikipedia article about glob patterns भी देखें।

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