文字列配列にシーケンシャル/リニア検索を記述することになっています。私は仕上げに非常に近いですが、課題の一部が私を混乱させます。ターゲットと一致するかターゲットがより小さいになるまで、ターゲット項目とリストの連続する要素を比較します。数値がない場合、文字列は他の要素よりも多かれ少なかれますか?たぶん私はそれについて正しく考えていないかもしれない。ここに私のプログラムは、これまでのところです:Javaの文字列配列のシーケンシャル検索
public class SequentialSearchString {
public static boolean sequential (String[] numbers){
//Set the target item to an arbitrary String that should return true.
String T1 = "Frank";
for (int i = 0; i < numbers.length; i++){
if (numbers[i] == T1){
return true;
}
if (numbers[i] != T1){
numbers[i] = numbers[i+1];
}
}
return false;
}
public static boolean sequential2 (String[] numbers){
//Set the target key to String that should return false.
String T2 = "Ian";
for (int i = 0; i < numbers.length; i++){
if (numbers[i] == T2){
return true;
}
if (numbers[i] != T2){
numbers[i] = numbers[i+1];
}
}
return false;
}
public static void main(String[] args) {
//Create a list of 8 Strings.
String [] numbers =
{"Ada", "Ben", "Carol", "Dave", "Ed", "Frank", "Gerri", "Helen", "Iggy", "Joan"};
//If the first target item (T1) is found, return Succuss. If not, return failure.
if (sequential(numbers) == true){
System.out.println("Success. 'T1' was found");
}
else {
System.out.println("Failure. 'T1' was not found");
}
//If the second target item (T2) is found, return Succuss. If not, return failure.
if (sequential2(numbers) == true){
System.out.println("Success. 'T2' was found");
}
else {
System.out.println("Failure. 'T2' was not found");
}
}
}
第一の方法では正常に動作しますが、私は、リストにない要素を検索して問題を抱えているように見えます。ここで私はプログラムを実行した後に取得するエラーメッセージは次のとおりです。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at SequentialSearchString.sequential2(SequentialSearchString.java:32)
at SequentialSearchString.main(SequentialSearchString.java:50)
Success. 'T1' was found
割り当てを理解し、例外を固定すべてのヘルプははるかに高く評価されるだろう。
情報の場合:==と!=を使用して文字列値を比較することはできません(オブジェクトの「アドレス」のみを比較します)。あなたはstring1.equals(string2)を使う必要があります – huelbois
'String#compareTo'を使って文字列を比較します。ここでは詳細を説明する関連する質問があります:http://stackoverflow.com/questions/4064633/string-comparison-in-java –
「より小さい」要求に関しては、Java StringがComparableを実装しています。オブジェクトを別のオブジェクトと比較するためにComparable.compareTo()を呼び出すと、戻り値はオブジェクトの相対的な自然順を示します。ストリングの場合、自然順番は辞書順です。 –