C#循环通过数组

时间:2013-04-25 21:10:41

标签: c# arrays loops

我对C#完全陌生。我试图循环一个短数组,其中数组中的字符串元素放在网站搜索的末尾。代码:

int n = 1;
string[] s = {"firstitem","seconditem","thirditem"}
int x = s.Max(); // note, from my research this should return the maximum value in the array, but this is the first error
x = x + 1

while (n < x)
{

      System.Diagnostics.Process.Start("www.website.com/" + b[0]);

      b[]++; // this also generates an error "identifier expected"

}

我的编码,逻辑或两者都错了。根据我读过的内容,我应该能够在数组中获取最大值(作为int),然后添加到数组值,而WHILE循环在数组中添加每个值网站结束(然后停止)。请注意,在第一个错误上,我尝试使用不同的编码方式,如下所示:

int x = Convert.ToInt32(s.Max);

但是,它会产生过载错误。如果我正确地阅读了内容,MAX应该会在序列中找到最大值。

5 个答案:

答案 0 :(得分:6)

foreach(var str in s)
{
  System.Diagnostics.Process.Start("www.website.com/" + str);
}

答案 1 :(得分:3)

你有一组字符串。最大的字符串仍然是字符串,而不是int。由于s.Max()是一个字符串,并且您正在将它分配给int:int x = s.Max();类型的变量,编译器(正确地)会通知您类型不匹配。您需要将该字符串转换为int。因为,查看你的数据,它们不是整数,我认为没有合理的方法将这些字符串转换成整数,我认为没有合理的解决方案。 “firstitem”应该是什么整数?

如果您只想为数组中的每个项执行一些代码,请使用以下模式之一:

foreach(string item in s)
{
    System.Diagnostics.Process.Start("www.website.com/" + item);
}

for(int i = 0; i < s.Length; i++)
{
    System.Diagnostics.Process.Start("www.website.com/" + s[i]);
}

答案 2 :(得分:1)

  1. 你错过了几个分号
  2. x可能应该是数组的Length,而不是其中的最大值
  3. 你需要在你的循环内增加x - 在它的末尾,而不是在它之外
  4. 您实际上应该增加n,而不是x
  5. n应该从0开始,而不是从1
  6. 开始
  7. 在循环内部,您使用的是b[0],您可能希望使用b[n]
  8. 我不是C ++专家,但我不知道b[]++可能意味着什么
  9. 正如其他答案所述,您可能希望使用forforeach代替while
  10. 努力完成一些入门教程。试验和错误可能是一个有用的工具,但在学习基础知识时没有必要依赖它

答案 3 :(得分:1)

以下是一张图片,指出您的代码有什么错误:

Answer with picture

更正后,它将是:

int n=1;
string[] s= { "firstitem", "seconditem", "thirditem" };
int x=s.Length;

while(n<x) {
    System.Diagnostics.Process.Start("www.website.com/"+s[n]);
    n++; // or ++n
}

我们可以使它更具语义性:

var items=new[] { "firstitem", "seconditem", "thirditem" };

for(int index=1, count=items.Length; index<count; ++index)
    Process.Start("www.website.com/"+items[index]);

如果起始顺序无关紧要,我们可以使用foreach代替,我们可以使用Linq使代码更简单:

var list=(new[] { "firstitem", "seconditem", "thirditem" }).ToList();
list.ForEach(item => Process.Start("www.website.com/"+item));

我们可能经常以另一种形式写作:

foreach(var item in new[] { "firstitem", "seconditem", "thirditem" })
    Process.Start("www.website.com/"+item);

答案 4 :(得分:0)

来自样本

var processList = (new string[]{"firstitem","seconditem","thirditem"})
                 .Select(s => Process.Start("www.website.com/" + s))
                 .ToList();

这是一个输出到控制台的测试版本

(new string[] { "firstitem", "seconditem", "thirditem" })
          .Select(s => {  Console.WriteLine(@"www.website.com/" + s); return s; })
          .ToList();

注意:Select需要返回类型,。ToList()强制执行评估。