2011-11-30 58 views
0
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.我在做什麼錯了?使用args設施

+2

'args'代表當你第一次通過啓動程序,傳遞命令行參數Windows命令提示符。它不會在運行時讀取用戶輸入。爲了在程序運行時閱讀用戶輸入,你需要使用'Console.ReadLine()'和朋友。 – BoltClock

+0

你使用了什麼命令行參數?另外,檢查'args'的長度總是一個好主意。 – Viruzzo

回答

3

傳遞給Main方法的args數組參數將包含傳遞給可執行文件的命令行參數。如果沒有通過,它將是空的。

您的代碼需要在運行可執行文件時在命令行傳遞2個參數:args[0]args[1],因爲這是您正在嘗試閱讀的內容。因此,要正確地運行程序,你必須在命令行中傳遞的兩個參數:

Calculator.exe 1 2 

或者,也許你想在這種情況下,您不使用args變量的用戶閱讀他們,但是你從閱讀控制檯:

double number1 = Convert.ToDouble(Console.ReadLine()); 
double number2 = Convert.ToDouble(Console.ReadLine()); 

現在您可以簡單地使用Calculator.exe運行您的應用程序。

+0

那麼忽略我提出的錯誤? – Evildommer5

+0

它不會讓我進入路徑 – Evildommer5

+0

或者處理程序啓動時沒有參數的情況。檢查'Args.Length'。 –

0

你檢查了你的參數數組嗎?你是否用這樣的控制檯啓動程序?

myprogram.exe 34 54 

0

您將需要構建此.exe,然後使用兩個參數(例如app.exe 1 2)從命令行運行它。

您也可以在VS中通過轉到項目屬性(右鍵單擊項目 - >屬性),在調試下並將命令行參數添加到框中(例如1 2)來執行此操作。

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