0

do-while ループは、インクリメントされる前または後に値をチェックしますか? この do-while ループをエスケープできないようで、それが間違いなのかどうか判断できません。このループのポイントは、ユーザーからの入力を取得することです。ユーザーが「X」を押したら、ループを終了させます。間違ったタイプのループを使用していますか、それとも間違ったステートメントを使用していますか?

int i = 0, 
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];  
do{ 
    System.out.print("What is " + letter +"? ");
    coefficient[i] = keyboard.nextLine();
    i++;
    letter++;
    inputCount++;           
}while(coefficient[i] != "X");
4

3 に答える 3

4

を使用して文字列を比較しないでください==。代わりにequals(...)またはメソッドを使用してください。equalsIgnoreCase(...)== は、2 つのオブジェクトが同じであるかどうかをチェックすることを理解してください。だから代わりに

if (fu == "bar") {
  // do something
}

行う、

if ("bar".equals(fu)) {
  // do something
}

また、

if ("bar".equalsIgnoreCase(fu)) {
  // do something
}  

特にあなたの場合、私は変更します

} while(coefficient[i] != "X");

次のようなものに:

} while(!"X".equalsIgnoreCase(coefficient[i]));

また、 に配置したユーザー入力をテストしたいという点で、コードに別の問題がありますが、入力を参照しないcoefficient[i]ように i 変数をすぐにインクリメントします。coefficient[i]

したがって、おそらくテストは次のようにする必要があります。

} while(!"X".equalsIgnoreCase(coefficient[i - 1]));
于 2012-09-16T02:43:38.493 に答える
1

ここには 2 つの問題があります。まず、論理演算子を使用して文字列を比較しないでください。代わりに .equals を使用してください。例えば:

coefficient[i].equals("X");

次に、while 条件をチェックする前に、配列のインデックス カウンターをインクリメントしています。したがって、実際には、最後に入力された文字列が X であるかどうかを確認するために、そこから 1 を引く必要があります。

これを使用して動作するかどうかを確認します。

coefficient[i-1].equals("X");
于 2012-09-16T02:48:30.773 に答える
1

iとの間coefficient[i] = keyboard.nextLine();でインクリメントwhile(coefficient[i] != "X");しているため、while チェックで [i] が null であり、.equals も使用して文字列を比較します。

int i = 0, 
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];  
do{ 
    System.out.print("What is " + letter +"? ");
    coefficient[i] = keyboard.nextLine();
    i++;
    letter++;
    inputCount++;           
}while(!coefficient[i-1].equals("X"));
于 2012-09-16T02:49:08.883 に答える