Может кто-нибудь объяснить мне, что не так с моим кодом? - PullRequest
0 голосов
/ 28 мая 2020

Я изучал C#, и теперь я пытаюсь создать калькулятор, который считывает ваши входные данные, чтобы научиться правильно читать входные данные. Если это действительно просто, извините, я новичок в этом. Ошибка говорит о том, что он не может преобразовать int в строку для (10,20) и (14,20).

using System;

class Calculator {
static void Main() {
    int n1, n2;
    string operation;


    Console.Write("First number: ");
        n1 = int.Parse(Console.Read());
    Console.Write("Operation: ");
        operation = Console.ReadLine();
    Console.Write("Second number: ");
        n2 = int.Parse(Console.Read());

        if (operation == "+") {
            Console.Write(n1 + n2);
        }else if (operation == "-") {
            Console.Write(n1 - n2);
        }else if (operation == "*") {
            Console.Write(n1 * n2);
        }else if (operation == "/") {
            Console.Write(n1 / n2);
        };

    }
} ```

Ответы [ 3 ]

2 голосов
/ 28 мая 2020

Совершайте все ваши вызовы Console.ReadLine() не Console.Read()

Убедитесь, что вы вводите целое число для операндов. Если вы не вводите целое число (я не мог решить, означает ли ваш 10,20 ваши операнды десять и двадцать, или если вы из страны, которая использует запятую в качестве десятичного разделителя, а 10,20 - это десять и- a-пятый), то вам не удастся разобрать десятичное число с помощью int.Parse, попробуйте вместо этого decimal.Parse и измените все ваши типы данных

Использование Console.Read () прочитает один символ и вернет его значение numeri c, поэтому, например, символ 1 имеет значение int 31 (взгляните на таблицу ascii), что будет очень сбивать с толку и еще более запутать, как можно добавить A (значение ascii 65) к B ( 66 - результат 131) :) ...

1 голос
/ 28 мая 2020

Попробуйте это в качестве стартера для 10. Я уверен, что есть способы сделать это более эффективно, но это должно дать вам некоторые идеи:

using System;

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("First Number: ");
            int a = int.Parse(Console.ReadLine());

            Console.Write("Operation: ");
            string operation = Console.ReadLine();

            Console.Write("Second number: ");
            int b = int.Parse(Console.ReadLine());

            switch(operation)
            {
                case "+":
                    Console.WriteLine(string.Format("Result: {0}", (a + b)));
                    break;

                case "-":
                    Console.WriteLine(string.Format("Result: {0}", (a - b)));
                    break;

                case "*":
                    Console.WriteLine(string.Format("Result: {0}", (a * b)));
                    break;

                case "/":
                    Console.WriteLine(string.Format("Result: {0}", (a / b)));
                    break;
            }
            Console.WriteLine("Press any key to close...");
            Console.ReadKey();
        }
    }
}
1 голос
/ 28 мая 2020

Попробуйте с точкой. 10.20 и 14.20. Также попробуйте ReadLine

...