-1

我对 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应该在一个序列中找到最大值。

4

5 回答 5

6
foreach(var str in s)
{
  System.Diagnostics.Process.Start("www.website.com/" + str);
}
于 2013-04-25T21:13:19.400 回答
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]);
}
于 2013-04-25T21:14:10.513 回答
1
  1. 你错过了几个分号
  2. x大概应该是Length数组的,而不是其中的最大值
  3. 您需要x在循环内部增加 - 在循环结束时,而不是在循环之外
  4. 你实际上应该递增n,而不是x
  5. n应该从 0 开始,而不是从 1
  6. 在您正在使用的循环内b[0]您可能想要使用的地方b[n]
  7. 我不是 C++ 大师,但我不知道这b[]++意味着什么
  8. 正如其他答案所提到的,您可能想要使用 aforforeach代替 a while
  9. 努力阅读一些介绍性教程。反复试验可能是一个有用的工具,但在学习基础知识时无需依赖它
于 2013-04-25T21:28:55.523 回答
1

下面是一张图片,指出您的代码有哪些错误:

用图片回答

改正后应该是:

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);
于 2013-04-25T21:53:44.480 回答
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() 强制执行评估。

于 2013-04-25T21:34:40.387 回答