2013-06-01 4 views
8

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

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
     String operator = keyboard.nextLine(); 
     char symbol = operator.charAt(0); 

     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter a value v2: "); 
     v2 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
     operator = keyboard.nextLine(); 
     switch (symbol) 
      { 
      case'+': 
       sum.writeOutput(); 
       break; 
      case'-': 
       minus.writeOutput(); 
       break; 
      case'*': 
       times.writeOutput(); 
       break; 
      case'/': 
       divide.writeOutput(); 
       break; 
      case'q': 
       System.out.println("Your last result was " ); 
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 
    public static double divide(double value1, double value2) 
    { 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

समस्या क्या है? – arynaq

+0

मुझे 4 त्रुटियां मिल रही हैं जो बताते हैं कि कंपाइलर प्रतीक नहीं ढूंढ सकता है। यह संलग्न है। मुझे नहीं पता कि मैं इसे सही तरीके से कर रहा हूं और यदि यह मुझे परिणाम देगा जो मुझे चाहिए। क्या मुझे कक्षा विवरण के साथ एक अलग जावा फ़ाइल बनाई जानी चाहिए? फिर से, मैं प्रोग्रामिंग के लिए नया हूँ। RPNCalc.java:25: त्रुटि: प्रतीक नहीं मिल सकता \t \t \t \t sum.writeOutput(); \t \t \t \t^ – Charla

+1

'sum.writeOutput();'? परिभाषित एकमात्र 'sum' मैं एक फ़ंक्शन है, और फ़ंक्शंस में सदस्य नहीं हो सकते हैं, और मुझे कहीं भी 'writeOutput()' फ़ंक्शन परिभाषित नहीं किया गया है, इसलिए यह दो गलतियां हैं। – Patashu

उत्तर

1

ठीक एक व्यायाम के रूप में छोड़ दिया जाता है। ये रहा। मैंने आपके प्रोग्राम को थोड़ा सा संशोधित किया है। यहां आपके मुद्दे को संशोधित करते समय आए मुद्दे हैं। 1. किसी भी कक्षा में कोई "writeOutput() विधि नहीं थी। इसलिए मुझे कोड के उस टुकड़े को हटाना पड़ा। 2. इसे एक पुनरावृत्ति प्रक्रिया बनाने के लिए थोड़ी देर लूप पेश करना पड़ा। 3. ऑपरेटर को स्थानांतरित कर दिया गया ऑपरेटर स्ट्रिंग को पढ़ने के बाद .charAt (0) विधि।

चूंकि आप स्विच स्टेटमेंट का उपयोग कर रहे हैं, तो आप ऑपरेटर मान की तुलना "एनसीआर" स्ट्रिंग मान से नहीं कर सकते हैं। इसका उपयोग करने के लिए, आपको स्ट्रिंग तुलना का उपयोग करना होगा बराबर() विधि

अंतिम लेकिन कम से कम नहीं, ऑपरेशन का नतीजा गणना के अगले दौर के लिए इनपुट में से एक होना चाहिए। मतलब है कि पहले ऑपरेशन का परिणाम अगले ऑपरेशन के पहले पैरामीटर में पारित किया जाएगा।

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
//  String operator = keyboard.nextLine(); 
//  char symbol = operator.charAt(0); 
     char operator = ' ';//First time around, set this to an something other than 'q' 
     String operatorString = " "; 
     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     while(operator != 'q') 
     { 
      System.out.print("Enter a value v2: "); 
      v2 = keyboard.nextDouble(); 
      System.out.println(); 
      System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
      operatorString = keyboard.next();//nextLine() doesn't wait until the user hit enter 
      operator = operatorString.charAt(0); 
      switch (operator) 
      { 
      case'+': 
       v1 = sum(v1, v2); 
       System.out.println(v1); 
       break; 
      case'-': 
       v1 = minus(v1, v2); 
       System.out.println(v1); 
       break; 
      case'*': 
       v1 = times(v1, v2); 
       System.out.println(v1); 
       break; 
      case'/': 
       v1 = divide(v1, v2); 
       System.out.println(v1); 
       break; 
      case'q': 
       System.out.println("Your last result was " );     
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
     } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 

    public static double divide(double value1, double value2) 
    { 
     if (value2 == 0) 
     { 
      System.out.println("Division by Zero. Try again"); 
      return value1; 
     } 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

हालांकि मैंने इसे शिक्षक के साथ बाहर निकाला, लेकिन मैं आपकी मदद की सराहना करता हूं। यह समझना बहुत आसान था। एक बार फिर धन्यवाद। – Charla

0

आप अपने फ़ंक्शन नामों का इलाज कर रहे हैं जैसे कि वे कुछ वर्ग की वस्तुएं हैं। क्या यह संकलन भी करता है?

जब आप उपयोगकर्ता 'q' टाइप करते हैं तो आप अपने प्रोग्राम से बाहर निकलना चाहते हैं।

शुरुआत में आप एक ऑपरेटर पढ़कर शुरू करते हैं। क्यूं कर?

आपको लूप में अपने प्रोग्राम के मुख्य निकाय को एन्केज करने की आवश्यकता है।

मैं तुम्हारे लिए कुछ पंक्तियां लिख देंगे, लेकिन परिवर्तन के थोक के लिए आप

double result; 
System.out.print("Enter the first value"); 
result = keyboard.nextDouble(); 
boolean done = false; 

while (!done) { 
    System.out.println("Enter a value"); 
    v1 = keyboard.nextDouble(); 
    System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
    operator = keyboard.nextLine(); 
    symbol = operator.charAt(0); 
    switch (symbol) { 
     case '+': 
     result = sum(result, v1); 
     break; 
     ... 
     case 'q': 
     System.out.println("Your last result was " + result); 
     done = true; 
     break; 
    } 
} 
+0

कोई फ़ाइल संकलित नहीं हुई है, मुझे 4 stors को सभी stating RPNCalc.java:25 प्राप्त हुआ: त्रुटि: प्रतीक नहीं मिल सकता \t \t \t sum.writeOutput(); \t \t \t \t^ प्रतीक: चर राशि स्थान: वर्ग RPNCalc \t \t \t \t^ – Charla

+0

माफ करना, मैं मेरी बयान पूरा नहीं किया। मूल रूप से मेरे पास एक पूरी तरह से अलग कार्यक्रम था जो कथन के दौरान एक कार्य में लगाया गया था लेकिन इसे बदलने का निर्देश दिया गया था। – Charla

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