2015-05-19 2 views
0

У меня есть следующая программа, которая просто считывает две матрицы из .txt-файлов в 2D-массивы. И запустить его из командной строки для разработчиков VS2012 как первая картинаАргументы командной строки для двух файлов .txt

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading.Tasks; 
 
using System.IO; 
 

 

 
namespace Assignment3 
 
{ 
 
    class Program 
 
    { 
 
     static void Main(string[] args) 
 
     { 
 

 
      int[,] matrix1 = new int[3, 3]; int[,] matrix2 = new int[3, 3]; int[,] matrix3 = new int[3, 3]; 
 
      int i = 0, j = 0, k = 0; 
 
      #region Reading Matrices From Files 
 
      
 
      string text = System.IO.File.ReadAllText(@"Matrix1.txt"); 
 
      
 
      
 
      foreach (var row in text.Split('\n')) 
 
      { 
 
       j = 0; 
 
       foreach (var col in row.Trim().Split(' ')) 
 
       { 
 
        matrix1[i, j] = int.Parse(col.Trim()); 
 
        j++; 
 
       } 
 
       i++; 
 
      } 
 
      Console.WriteLine("Execution Starts Here"); 
 
      Console.WriteLine("\nMatrix1 Has been read from file Matrix1.txt...\n"); 
 
      for (i = 0; i < 3; i++) 
 
      { 
 
       for (j = 0; j < 3; j++) 
 
       { 
 
        Console.Write(String.Format("{0}\t", matrix1[i,j])); 
 
       } 
 
       Console.WriteLine(); 
 
      } 
 

 
      
 
      string text2 = System.IO.File.ReadAllText(@"Matrix2.txt"); 
 
      i = 0; 
 

 
      foreach (var row in text2.Split('\n')) 
 
      { 
 
       j = 0; 
 
       foreach (var col in row.Trim().Split(' ')) 
 
       { 
 
        matrix2[i, j] = int.Parse(col.Trim()); 
 
        j++; 
 
       } 
 
       i++; 
 
      } 
 
      Console.WriteLine("\n\nMatrix2 Has been read from file Matrix2.txt...\n"); 
 
      for (i = 0; i < 3; i++) 
 
      { 
 
       for (j = 0; j < 3; j++) 
 
       { 
 
        Console.Write(String.Format("{0}\t", matrix2[i, j])); 
 
       } 
 
       Console.WriteLine(); 
 
      } 
 
      #endregion
enter image description here Вот то, что я намерен сделать, это выполнить program.exe с именами файлов также (средство дает имена файлов в время выполнения), как на втором рисунке.

enter image description here

Я думаю, что это имеет отношение к каким-то вещам, как количество аргументов командной строки. кто-нибудь мне поможет.

+2

Подсказка: 'void Main (string [] args)' – leppie

ответ

1

string[] args часть метода Main содержит любые аргументы командной строки, переданные вашему приложению. Вы можете получить доступ к именам файлов через args[0] и args[1].

Edit: Просто добавить, вы можете указать аргументы командной строки для использования при отладке/погонного приложение из Visual Studio при просмотре свойств для вашего проекта (выберите проект в обозревателе решений и нажмите Alt+Enter) и настройка их в поле Command Line Arguments под вкладкой Debug.

Edit: В ответ на Ваш вопрос в комментарии: где у вас есть

string text = System.IO.File.ReadAllText(@"Matrix1.txt"); 

вы жёстко имя файла как Matrix1.text. Если вы хотите указать имена файлов во время выполнения, один из них должен передать их в качестве аргументов командной строки. К этим аргументам командной строки можно обратиться с параметром args[] в ваш основной метод. args [0] содержит первое значение параметра, args [1] содержит второе и т. д. Таким образом, выше линия может быть заменена

string text = System.IO.File.ReadAllText(args[0]); 

Стоит отметить, что люди, как правило, имеют секцию проверки в верхней части Main метода, который подтверждает пользователь прошел ожидаемое число аргументов, и что они из ожидаемых типов. Если есть какие-то исключения, обычно отображается сообщение об использовании, а затем выходит из приложения.

+0

Хорошо, теперь у меня есть немного смысла для этого, но как назначить эти файлы args [0] и args [1] .txt. в соответствии с этим кодом –

+0

Я обновил ответ, чтобы дать вам немного более подробную информацию. – amcdermott

+0

действительно хорошо сделано, это то, что я хотел. Спасибо друг –

Смежные вопросы