如何在拆分时找到数组最大值

时间:2017-12-20 10:13:42

标签: c#

嗨我从文本框中获取值并将其拆分为数组..然后我得到了最大值,它没有说实际价值;

此处使用代码

 string[] cwatchers = textBox4.Text.Split('\n');
        string[] sss = textBox1.Text.Split('\n');
        string[] emails = textBox2.Text.Split('\n');

        var sb = new StringBuilder();
        sb.AppendLine("VERSION BUILD=8820413 RECORDER=FX");
        sb.AppendLine("SET !ERRORIGNORE YES");
        sb.AppendLine("SET !TIMEOUT_TAG 3");
        sb.AppendLine("SET !TIMEOUT_STEP 3");
        sb.AppendLine("SET !TIMEOUT_PAGE 7");
        sb.AppendLine("SET !REPLAYSPEED FAST");

        for (int i = 0; i < Convert.ToInt64(cwatchers.Max()); i++)
        {
            sb.AppendLine("TAB T=1").AppendLine("CLEAR");
            sb.AppendLine("URL GOTO=https://signin.ebay.com/ws/eBayISAPI.dll?SignIn&lgout=");
            sb.AppendLine("WAIT SECONDS=1");
            sb.AppendLine("TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:SIGNINFORM ATTR=ID:SUBMIT");
            sb.AppendLine("SET !ENCRYPTION NO");
            sb.AppendLine("TAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:SIGNINFORM ATTR=ID:PASS CONTENT=Maths7524");
            sb.Append("TAG POS=1 TYPE=INPUT:TEXT FORM=ID:SIGNINFORM ATTR=ID:USERID CONTENT=").AppendLine(emails[i]);
            sb.AppendLine("TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:SignInForm ATTR=ID:sgnBt");
            sb.AppendLine("WAIT SECONDS=7");
            foreach (string item in sss)
            {
                sb.Append("URL GOTO=www.ebay.com/itm/").AppendLine(item);
                sb.AppendLine("WAIT SECONDS=1").AppendLine("TAG POS=1 TYPE=SPAN ATTR=ID:watchLabel");
                sb.AppendLine("TAG POS=1 TYPE=A ATTR=TXT:Watch").AppendLine("WAIT SECONDS=1").AppendLine();
            }
        }

        label5.Text = cwatchers.Max();

here i use detaisl

label5表示最大值为70

因为我们可以看到最大值是180 ..任何人都可以告诉我为什么这会变得虚假?

3 个答案:

答案 0 :(得分:7)

首先需要将元素转换为int,因为现在它们是字符串。尝试这样的事情:

label5.Text = cwatchers.Max(x=>int.Parse(x));

将所有元素解析为int,然后找到最大值。请注意,如果无法将任何元素解析为int,它将抛出异常。

答案 1 :(得分:6)

字面 var age = 25; var ageStr = `I am ${age} years old.` 更大70,因为两者都是字符串。说到这一点后,你的字符串中的每个字符都与同一位置的另一个字符串中的匹配字符进行比较。由于180肯定更高"7""1"也会大于"70"

为了避免词汇竞争,请使用数字,您必须将数据视为数字

"180"

答案 2 :(得分:3)

这应该做的工作:

label5.Text = cwatchers.Select(Int32.Parse).Max().ToString();

在执行最大检测之前,您需要将String变量转换为Int32。否则,将在String上执行比较,产生完全不同的结果。