हैलो, मैं सी # के लिए नया हूं और कल कुछ जावा और पायथन ज्ञान के साथ इसे सीखना शुरू कर दिया। मैंने कैलकुलेटर बनाने की कोशिश की लेकिन यह उम्मीद के मुताबिक काम नहीं कर रहा है। कोड है:

using System;

namespace LolCS{
    class Program{
        
        static void Main(){
            //variables and objects
            Program proj = new Program();
            double solution = 0;
            string operation;
            double input1 = 0;
            double input2 = 0;

            //take inputs for input 1,2 and which operation to use
            Console.WriteLine("Welcome to this calculator, let's get started\n"+
                              "Please input your operations\n");               

            double.TryParse(proj.get_input("in1"), out input1);
            operation = proj.get_input("op");
            double.TryParse(proj.get_input("in2"), out input2);

            //call function which does the math and assign result to variable solution
            solution = proj.domath(operation, input1, input2);

            //print solution
            Console.WriteLine(input1+operation+input2+" = "+solution);
            if (Console.ReadLine() == "r") { Main(); } 
        }

        //function to do the math according to the given operation
        double domath(string oper, double in1, double in2){
            double solu = 0;
            switch(oper){                                    
                case "+":
                    solu = in1 + in2;
                    break;
                case "-":
                    solu = in1-in2;
                    break;
                case "*":
                    solu = in1 * in2;
                    break;
                case "/":
                    solu = in1 / in2;
                    break;
            }
            return solu;
        }

        //gets values for the variables
        string get_input(string in_type){
            string gon_ret = "";
            switch(in_type){
                case "in1":
                    Console.WriteLine("Input 1: ");
                    gon_ret = Console.ReadLine();
                    break;
                case "in2":
                    Console.WriteLine("Input 2: ");
                    gon_ret = Console.ReadLine();
                    break;
                case "op":
                    Console.WriteLine("Operation: ");
                    gon_ret = Console.ReadLine();       
                    if (!(gon_ret == "+") && !(gon_ret == "-") && !(gon_ret == "*") && !(gon_ret == "/")){
                        Console.WriteLine(gon_ret+" Not Valid, try again");
                        get_input("op");
                    }
                    break;  
            }
            return gon_ret;

        }
    }
}

समस्या कोड की इस पंक्ति के साथ है:

case "op":
                    Console.WriteLine("Operation: ");
                    gon_ret = Console.ReadLine();       
                    if (!(gon_ret == "+") && !(gon_ret == "-") && !(gon_ret == "*") && !(gon_ret == "/")){
                        Console.WriteLine(gon_ret+" Not Valid, try again");
                        get_input("op");
                    }
                    break;  

यह जांचने की उम्मीद है कि ऑपरेशन के लिए इनपुट +, -, * या / से अलग है या नहीं और यदि यह है तो इसे "नॉट वैलिड" प्रिंट करना चाहिए और ऑपरेशन के लिए इनपुट को दोहराना चाहिए। यह अपेक्षित रूप से काम करता है यदि इनपुट पहली बार सही है, लेकिन यदि सही इनपुट दूसरे प्रयास में या बाद में दिया जाता है, तो गलत इनपुट वापस कर दिया जाता है। उदाहरण आउटपुट:

Welcome to this calculator, let's get started
Please input your operations

Input 1: 
2
Operation: 
p
p Not Valid, try again
Operation: 
+
Input 2: 
3
2p3 = 0

क्षमा करें यदि यह एक मूर्खतापूर्ण गलती है, लेकिन मैं अभी भी सीख रहा हूं। सहायता के लिए धन्यवाद!

0
timey1 25 पद 2021, 14:00

1 उत्तर

सबसे बढ़िया उत्तर

आप get_input("op") के साथ एक पुनरावर्ती ऑपरेशन कर रहे हैं, फ़ंक्शन ठीक काम करता है लेकिन आप नए get_input("op") कॉल के परिणाम नहीं लौटा रहे हैं। आप मूल कॉल से अमान्य स्ट्रिंग उत्पाद वापस कर रहे हैं।

            case "op":
                Console.WriteLine("Operation: ");
                gon_ret = Console.ReadLine();       
                if (!(gon_ret == "+") && !(gon_ret == "-") && !(gon_ret == "*") && !(gon_ret == "/")){
                    Console.WriteLine(gon_ret+" Not Valid, try again");
                    //Return here as the current call is invalid
                    return get_input("op");
                }
                break;
0
avalerio 25 पद 2021, 14:16
हे भगवान अंत में मैं 2 महीने के बाद रिकर्सन को समझता हूं। बहुत - बहुत धन्यवाद!
 – 
timey1
25 पद 2021, 14:29