两个 .txt 文件的命令行参数

Command Line Arguments for two .txt files

我有以下程序,它只是将两个矩阵从 .txt 文件读取到二维数组中。我 运行 它来自 VS2012 的开发人员命令提示,就像第一张图片

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
在这里我打算做的是像第二张图片一样执行 program.exe 和文件名(意味着在执行时给出文件名)。

我认为这与命令参数的数量有关。任何人都请帮助我。

Main 方法的 string[] args 部分包含传递给您的应用程序的所有命令行参数。您可以通过 args[0]args[1].

访问文件名

编辑: 只需添加,您可以通过查看您的属性来指定当 debugging/running 您的应用来自 Visual Studio 时要使用的命令行参数项目(select 解决方案资源管理器中的项目并按 Alt+Enter)并将它们设置在 Debug 选项卡下的 Command Line Arguments 字段中。

编辑: 回复你在评论中的问题:你在哪里

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

您已将文件名硬编码为 Matrix1.text。如果您希望能够在 运行 时指定文件名,一种选择是将它们作为命令行参数传递。可以使用 main 方法中的 args[] 参数访问这些命令行参数。 args[0] 包含第一个参数值,args[1] 包含第二个,依此类推。所以上面的行可以替换为

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

值得注意的是,人们通常在 Main 方法的顶部有一个验证部分,用于确认用户已经传递了预期数量的参数并且它们是预期的类型。如果有任何异常,通常会显示使用消息然后退出应用程序。