Метод в точке входа не видит входных данных
Хочу понять как работает обращение методов внутри класса. Т.е. хочу разобраться как один метод может получать некоторые значения у другого и далее выводить это все в итоговом методе который инициализирую в точке старта. Проблема следующая: метод в точке старта просто не видит входных значений...
Сам код:
namespace MyNamespace
{
class Calc
{
public static void Main(string[] args)
{
ResultOfNums();
}
public static void Nums()
{
Console.WriteLine("Введите высоту");
string num1 = Console.ReadLine();
int height = Convert.ToInt32(num1);
Console.WriteLine("Введите ширину");
string num2 = Console.ReadLine();
int width = Convert.ToInt32(num2);
}
public static int ResultOfNums(int height, int width)
{
int area = height * width;
Console.WriteLine(area);
return area;
}
}
}
Ответы (1 шт):
Проблема вашего кода в том, что вы вызываете метод ResultOfNums не передав в него нужных аргументов (длину и ширину).
Метод Nums(), который должен получать эти значения у пользователя - нигде не вызывается.
Чтобы код работал правильно - должна быть правильная последовательность выполнения:
- Запуск программы из точки входа (
Main). - Сбор ввода пользователя (
Nums). - Вычисление результата (
ResultOfNums).
В вашем случае, чтобы получить в методе ResultOfNums нужные значения - вы, во-первых, сперва должны вызывать метод ввода.
public static void Main(string[] args)
{
Nums();
}
Теперь, при запуске программы - вы увидите сообщения о вводе высоты и ширины из метода Nums().
Затем, когда данные будут введены - вы должны вызвать метод ResultOfNums, указав ему как аргументы - введённые числа.
Сделать это удобнее всего из метода Nums():
public static void Nums()
{
Console.WriteLine("Введите высоту");
string num1 = Console.ReadLine();
int height = Convert.ToInt32(num1);
Console.WriteLine("Введите ширину");
string num2 = Console.ReadLine();
int width = Convert.ToInt32(num2);
var area = ResultOfNums(height, width)
}
Что даст итоговый код вида:
namespace MyNamespace
{
class Calc
{
public static void Main(string[] args)
{
// Вызываем диалог с пользователем
Nums();
}
public static void Nums()
{
// Определяем значение высоты
Console.WriteLine("Введите высоту");
string num1 = Console.ReadLine();
int height = Convert.ToInt32(num1);
// Определяем значение ширины
Console.WriteLine("Введите ширину");
string num2 = Console.ReadLine();
int width = Convert.ToInt32(num2);
// Имея значения от пользователя - вызываем подсчёт результата.
// Обратите внимание - этот метод будет вызван только после того,
// как была выполнена прошлая часть кода
var area = ResultOfNums(height, width);
}
public static int ResultOfNums(int height, int width)
{
int area = height * width;
Console.WriteLine(area);
return area;
}
}
}