#c# #visual-studio #arrays #methods
#c# #visual-studio #массивы #методы
Вопрос:
Я столкнулся с проблемой при создании консольного приложения в Visual Studio c # 2005
Я создал следующую программу, в которой в программе вызывается метод (для суммирования 2 предопределенных значений)
вот его код
class program
{
static void Main()
{
program a;
a = new program();
Console.WriteLine(a.am1(1,2));
Console.ReadLine();
}
int sum;
public int am1(int num1, int num2)
{
sum = num1 num2;
return sum;
}
}
Теперь вот основная проблема, с которой я сталкиваюсь, ну, в этой программе предопределены два целых числа (num1 и num2), я хотел, чтобы эти 2 числа были взяты у пользователя, это означает, что пользователь вводит два числа, а затем выполняется та же программа, что и выше. Как это должно быть сделано?
P.S помните, что все должно быть сделано в методах
Комментарии:
1. пожалуйста, отформатируйте свой код в следующий раз!
2. А также приведенный ответ об использовании программных аргументов (args[]), вы можете взаимодействовать с пользователем с помощью консоли и the Console. Метод ReadLine(), который: считывает следующую строку символов из стандартного потока ввода.
3. @David Hall: в зависимости от пользовательского интерфейса вы также можете взаимодействовать с пользователем с помощью текстовых полей и тому подобных 🙂
4. @Andreas верно 🙂 на самом деле, я только что заметил, что OP использовал ReadLine() в своем первоначальном вопросе, поэтому мой комментарий был немного излишним. Я пытался помочь, учитывая, что OP, похоже, обладает очень базовыми знаниями C #. Кстати, очень полезный ответ.
5. @David: это был сарказм? … слышал это … каким-то образом 🙂
Ответ №1:
я надеюсь, что понял ваши требования… если нет, пожалуйста, уточните!
public sealed class Program
{
private readonly int _number1;
private readonly int _number2;
public Program(int number1, int number2)
{
this._number1 = number1;
this._number2 = number2;
}
public int Sum()
{
return this._number1 this._number2;
}
public static void Main(string[] args)
{
// this one here is really brutal, but you can adapt it
int number1 = int.Parse(args[0]);
int number2 = int.Parse(args[1]);
Program program = new Program(number1, number2);
int sum = program.Sum();
Console.WriteLine(sum);
Console.ReadLine();
}
}
извините, это не мой основной стиль кодирования … тьфу… действительно уродливо!
Редактировать:
- не давайте слепого доверия
int.Parse()
. параметры поступают от пользователя, вам лучше перепроверить их! - вам лучше трижды проверить их, поскольку вы выполняете sum … к счастью, c # компилируется с
unchecked
— этот код может завершиться ошибкой сOverflowException
, если он скомпилирован в vb — запомните диапазоныint
- почему вы хотите выполнить простое добавление в дополнительном классе?
- вам следует разработать свой стиль (в отношении вашего комментария): отделите код пользовательского интерфейса от кода бизнес-уровня!
- вам не нужно создавать переменную экземпляра для каждой задачи — вы можете сделать это и с переменными области видимости …!
- …
Комментарии:
1. Чей это стиль кодирования? Вы имеете в виду, что обычно вы не пишете на C #?
2. нет 🙂 … обычно я не адаптируюсь к стилю OP … но этот здесь был таким жестоким… вау … напоминает мне о моих первых днях 🙂
3. вау .. это так жестоко .. в вашем коде есть несколько вещей, которые я еще не изучил. упростите, пожалуйста
4. жестокое слово дня 🙂 каков ваш уровень в c #? таким образом, я могу адаптировать свой ответ…
5. класс Program {int sum; public int am1(int num1, int num2) { Консоль. WriteLine(«Введите 1-е значение:»); num1 = Int32.Parse (консоль. ReadLine()); Консоль. WriteLine(«n Введите 2-е значение:»); num2 = Int32.Parse(консоль. ReadLine()); sum = num1 num2; возвращает сумму; } статическая пустота Main(строка[] аргументов) { Program a; a = новая программа(); Консоль. Строка записи(a.am1(1, 2)); Консоль. ReadLine(); } }
Ответ №2:
Используйте аргументы командной строки консольного приложения. Если это вас устраивает. Ниже приведен пример из MSDN.
public class Functions
{
public static long Factorial(int n)
{
// Test for invalid input
if ((n < 0) || (n > 20))
{
return -1;
}
// Calculate the factorial iteratively rather than recursively:
long tempResult = 1;
for (int i = 1; i <= n; i )
{
tempResult *= i;
}
return tempResu<
}
}
class MainClass
{
static int Main(string[] args)
{
// Test if input arguments were supplied:
if (args.Length == 0)
{
System.Console.WriteLine("Please enter a numeric argument.");
System.Console.WriteLine("Usage: Factorial <num>");
return 1;
}
// Try to convert the input arguments to numbers. This will throw
// an exception if the argument is not a number.
// num = int.Parse(args[0]);
int num;
bool test = int.TryParse(args[0], out num);
if (test == false)
{
System.Console.WriteLine("Please enter a numeric argument.");
System.Console.WriteLine("Usage: Factorial <num>");
return 1;
}
// Calculate factorial.
long result = Functions.Factorial(num);
// Print result.
if (result == -1)
System.Console.WriteLine("Input must be >= 0 and <= 20.");
else
System.Console.WriteLine("The Factorial of {0} is {1}.", num, result);
return 0;
}
}
// If 3 is entered on command line, the
// output reads: The factorial of 3 is 6.