using System;
namespace WS_7_A
{
class Calculator
{
public static void Main(string[] args)
{
Console.WriteLine("~~~~~~ Acme Calculator-o-Matic ~~~~~~");
Console.WriteLine("Enter two integers to add...");
double number1 = Convert.ToDouble(args[0]);
double number2 = Convert.ToDouble(args[1]);
Console.WriteLine("Answer: {0}", Calculator.add(number1, number2));
Console.ReadKey(true);
}
private static int add(int a, int b)
{
return (a + b);
}
private static double add ( double a , double b)
{
return ( a + b);
}
}
}
我收到的错误是System.IndexOutOfRangeException: Index was outside the bounds of the array.
我做错了什么?
答案 0 :(得分:3)
传递给args
方法的Main
数组参数将包含传递给可执行文件的命令行参数。如果没有传递,它将为空。
您的代码需要在运行可执行文件时在命令行传递2个参数:args[0]
和args[1]
,因为这是您尝试阅读的内容。因此,要正确运行应用程序,必须在命令行传递这两个参数:
Calculator.exe 1 2
或者您可能希望从用户那里阅读它们,在这种情况下您不使用args
变量,但是您从控制台读取它们:
double number1 = Convert.ToDouble(Console.ReadLine());
double number2 = Convert.ToDouble(Console.ReadLine());
现在您只需使用Calculator.exe
运行您的应用程序。
答案 1 :(得分:0)
您是否检查过args数组的计数?你是否用这样的控制台启动程序?
myprogram.exe 34 54
答案 2 :(得分:0)
您需要构建此.exe,然后使用两个参数(例如app.exe 1 2
)从命令行运行它。
您也可以在VS中执行此操作,方法是转到项目属性(右键单击项目 - >属性),在调试下将命令行参数添加到框中(例如1 2
)。
答案 3 :(得分:0)
您应该使用:
double number1 = Double.Parse(Console.ReadLine());
甚至:
double number1;
if (!double.TryParse(Console.ReadLine(), out number1)
{
Console.WriteLine("Number is Invalid");
//Some sort of code to allow the user to re-enter the number, or exit the app as preferred.
}
args
是传递给命令行参数的内容。
例如,呼叫:
MyApp.exe 123 456
args[0]
将是123 args[1]
将为456