两个 .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
方法的顶部有一个验证部分,用于确认用户已经传递了预期数量的参数并且它们是预期的类型。如果有任何异常,通常会显示使用消息然后退出应用程序。
我有以下程序,它只是将两个矩阵从 .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
我认为这与命令参数的数量有关。任何人都请帮助我。
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
方法的顶部有一个验证部分,用于确认用户已经传递了预期数量的参数并且它们是预期的类型。如果有任何异常,通常会显示使用消息然后退出应用程序。