1

我不明白这里出了什么问题。有人可以解释一下吗?

using System;

public class Test
{
        public static void Main()
        {
                int bobo = 0;
                string result = "";
                string bob;
                string search = Console.ReadLine();
                string words = Console.ReadLine();
                string first = words.Substring(0,1);
                string second = words.Substring(1,2);
                string third = words.Substring(2,3);
                for(int i = 0;i<searchc.Length;i++)
                {
                        bobo++;
                        bob = search.Substring(bobo,bobo+2);    
                        if(bob == first)
                        {
                                result += bob.ToUpper();
                        }
                }

                Console.WriteLine(result);
        }
}

我看到的错误信息是:

Unhandled Exception: System.ArgumentOutOfRangeException: startIndex + length > this.length
Parameter name: length
  at System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in <filename unknown>:0 
  at Test.Main () [0x00000] in <filename unknown>:0 
4

2 回答 2

1

我害怕帮助你 bc 你的 alg。看起来有缺陷。

我会首先添加一个检查以确保长度> 2,然后以下逻辑应该会有所帮助。

将 bobo 更改为 i 并将您的 for 循环更新为for(int i = 0;i<searchc.Length-1;i++)

例如

bob = search.Substring(i,i+1);  
于 2012-09-18T22:53:21.973 回答
0

我会考虑为你的“单词”对象做一个 string.Split() 。

这将取决于输入的格式,但例如:

单词:'word1 word2 word3'

您可以执行以下操作:

var words = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

如果您的“单词”只是一个字符列表,那么我将首先通过更好地命名您的字符串来使您的代码更清晰。很难理解您要使用提供的示例做什么。但这是我会做的。

        var result = string.Empty;

        var search = Console.ReadLine();
        var words = Console.ReadLine();
        var first = words.Substring(0, 1);
        for (int i = 0; i < search.Length; i++)
        {
            if (i + 1 > search.Length) break;
            var bob = search.Substring(i, i + 2);

            if (bob == first)
                result += bob.ToUpper();
        }

        Console.WriteLine(result);

如果您在句子中搜索单词列表,请尝试以下操作:

        var result = new System.Text.StringBuilder();

        var search = Console.ReadLine();
        var words = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

        foreach (var word in words)
        {
            if (search.Contains(word))
                result.Append(string.Format("{0},", word));
        }

        Console.WriteLine(result.ToString());

希望能帮助到你。

于 2012-09-19T02:43:32.327 回答