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

Bri*_*mas 2 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();
Run Code Online (Sandbox Code Playgroud)

在这里我使用detaisl

label5表示最大值为70

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

Pik*_*koh 7

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

label5.Text = cwatchers.Max(x=>int.Parse(x));
Run Code Online (Sandbox Code Playgroud)

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


Him*_*ere 6

字面意思 70 更大180,因为两者都是字符串.说到这一点后,你的字符串中的每个字符都与同一位置的另一个字符串中的匹配字符进行比较.由于"7"肯定是更大的"1","70"也就是大于"180".

要避免使用词汇表,请使用数字,而必须将数据视为数字:

var max = label5.Select(x => Convert.ToInt32(x)).Max();
Run Code Online (Sandbox Code Playgroud)