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

私はあなたがあなたのalgをBCするのを手伝うことを恐れています. 欠陥があるように見えます。

最初に長さが > 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

「words」オブジェクトに対して string.Split() を実行することを検討します。

入力の形式によって異なりますが、たとえば次のようになります。

単語: '単語1 単語2 単語3'

次のことができます。

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 に答える