0

文字列インデックスが境界内にあるかどうかを確認する最良の方法は何ですか? インデックスの文字列をチェックしているとしましょう。i-1またはi+1 、!= null とは言えないためです。

例:

for (int i = 0; i < string.length(); i++) 
{
    if (string.charAt(i+1) == '#' && string.charAt(i - 1) != '1') 
    {    
    }
}

文字列の長さをチェックして、それがその中にあるかどうかを確認する必要がありますか?

4

5 に答える 5

1

これらの場合、ループの長さ(および/または開始)を常に変更してきました...これらはすべて良い答えです-それを行う方法は1つではありませんが、これが私が行う方法です:

for (int i = 1; i < string.length() - 1; i++) 
{
    if (string.charAt(i+1) == '#' && (i != 1 || string.charAt(i - 1) != '1'))
    {    
    }
}

編集:このコードが伴うすべての状況を考慮した後、必ずしもこの方法でこれを行うとは限りませんが、達成しようとしていることを正確に表現するためのよりクリーンな方法を見つけます

于 2013-01-11T17:05:44.210 に答える
1

最も簡単な方法は、forループを次のように変更することです。

for (int i = 1; i < string.length() - 1; i++) 
{
    if (string.charAt(i+1) == '#' && string.charAt(i - 1) != '1') 
    {    
    }
}

説明:

string.charAt(i - 1)文字列の位置を読み取る可能性があることを意味しますi-1。0 は有効な最小値であるため、反復を開始できますi = 1

string.charAt(i + 1)文字列の位置を読み取る可能性があることを意味しますi+1string.length() - 1は で反復を終了する必要がある有効な最大値i == string.length() - 2です。forループはループに入る前に条件をチェックするので、使用i < string.length() - 1するのがちょうどいいでしょう。

于 2013-01-11T17:18:08.903 に答える
1

このコードで試してみます。

for (int i = 1; string!= null && string.length() >= 3 && i < string.length() - 1; i++) 
//it solve the case of String == null and string too short
//it optimize the max number of cycles
{
    if (string.charAt(i+1) == '#' && string.charAt(i - 1) != '1') 
    {    
    }
}
于 2013-01-11T17:20:04.247 に答える
1
string.charAt(i+1) == '#'

i+1はい、文字列の長さを超えないようにする必要があると思います。

例:

if( (i+1) < string.length() && (i-1) >= 0 && (yourcode))
   { 
   }
于 2013-01-11T16:56:15.573 に答える
1

文字列の長さを確認してみませんか?

if(myString.length() - 1 > i)
于 2013-01-11T16:58:12.840 に答える