我正在查看代码高尔夫部分,并遇到了一个非常有趣的编码挑战。我决定仔细阅读帖子并注意到在C#中有一个例子。 为了了解它是如何工作的,我复制了代码并将其放入我的VS中以运行和调试它,但是,当我运行它时会出现问题。 (我想这样做的原因是因为我在了解原始程序员所设想的内容之后,计划用不同的代码创建我自己的版本。)
我得到一个数组超出范围的异常,我不知道为什么,有人会解释为什么错误存在并纠正它的步骤?
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace SourceCodeTranslationChallenge
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> dx = new Dictionary<string, string>();
dx.Add("using", "usura");
dx.Add("System", "Ratio");
dx.Add("Collections", "Comprensio");
dx.Add("Text", "Scriptum");
dx.Add("txt", "scrptm");
dx.Add("output", "scribo");
dx.Add("namespace", "nomenspatium");
dx.Add("class", "classis");
dx.Add("Program", "Libellus");
dx.Add("static", "immotus");
dx.Add("void", "inane");
dx.Add("Main", "Paelagus");
dx.Add("string", "chorda");
dx.Add("args", "argumenta");
dx.Add("Dictionary", "Lexicon");
dx.Add("new", "novus");
dx.Add("Add", "Adaugeo");
dx.Add("IO", "LecticoScribo");
dx.Add("abstract", "abstracto");
dx.Add("break", "confractus");
dx.Add("Math", "Mathematica");
dx.Add("File", "Ordo");
dx.Add("file", "ordo");
dx.Add("foreach", "prosingulus");
dx.Add("Read", "Lectico");
dx.Add("Write", "Scribo");
dx.Add("All", "Omnes");
dx.Add("translation", "interpretatio");
dx.Add("bool", "verumfalsus");
dx.Add("true", "verum");
dx.Add("false", "falsus");
dx.Add("0", "nil");
dx.Add("||", "aut");
dx.Add("&&", "et");
dx.Add("Key", "Clavis");
dx.Add("Value", "Pretium");
dx.Add("Replace", "Restituo");
dx.Add("Generic", "Ordinarius");
dx.Add("ToLatin", "AdLatinam");
string file = File.ReadAllText(args[0]);
foreach (var translation in dx )
{
file = file.Replace(translation.Key, translation.Value);
}
File.WriteAllText("output.txt", file);
}
}
}
答案 0 :(得分:4)
您是否只是通过运行可执行文件来运行此程序?如果是这样,你做错了。该程序要求在参数字符串中发送文件。所以,要测试它,只需&#34;打开&#34;使用此程序的输入文件。
答案 1 :(得分:3)
由于您在VS中进行了调试,因此在“string file = File.ReadAllText(args [0]);”上设置断点。你可能会看到args没有长度或者是null。
如果是这样,那么在项目设置中=&gt;调试部分,有一个命令行参数框,您可以在其中设置有效的文件路径(例如,C:\ YourFile.txt)。
一旦你这样做,尝试再次调试它,args [0]应该有一个值。