0

@文字を含む単語を入力としてプログラムを作成します。単語に @ が含まれていない場合は、ユーザーに @ を含む単語を求めるプロンプトを表示する必要があります。@ を含む単語が読み取られると、その単語を出力してから終了する必要があります。

これは私がこれまでに行ったことです:

public class find {
    public static void main(String[] args) {

        System.out.println(" Please enter a word with @ ");
        Scanner scan = new Scanner(System.in);

        String bad = "@";

        String word = scan.next();
        do
            if (!word.contains(bad))
                System.out.println(" Please try again ");
            else
                System.out.println(" " + word);
        while (!word.contains(bad));
    }
}

「@」を含む単語が入力として与えられた後に終了させることはできますが、「再試行してください」の後にスキャナーを行に追加しようとすると、while expected.

4

4 に答える 4

5

問題は、do/while の周囲の括弧が欠落していることだと思います:

       do
          if (!word.contains( bad ))
            System.out.println( " Please try again " );

            else 
            System.out.println( " " + word);

        while ( !word.contains( bad ));

次のようにする必要があります。

do
{
            if (!word.contains( bad ))
            System.out.println( " Please try again " );

            else 
            System.out.println( " " + word);
}while ( !word.contains( bad ));

これを好まない人もいるかもしれませんが、私の提案は常に開き括弧/閉じ括弧を使用することです。この場合、コードの if/else も同様です。多くの混乱を避けることができます。

于 2012-12-11T04:54:54.550 に答える
1

これはあなたの問題があるところです:

       do
            if (!word.contains(bad))
                System.out.println(" Please try again ");
            else
                System.out.println(" " + word);
        while (!word.contains(bad));

ループの開始点から終了点まで中かっこを配置する必要があります。|したがって、このことは次のようになります。

do {
    if (!word.contains(bad))
        System.out.println(" Please try again ");
    else
        System.out.println(" " + word);
} while(!word.contains(bad));

より良い練習のために、ここでdo...whileループを確認する必要があります。

于 2012-12-11T04:54:27.250 に答える
0

2 つの問題があります。

  1. あなたのコードは中括弧を適切に使用していません
  2. 正しい単語が入力されていない場合、新しい単語を読もうとしていません。

また、以下のループwhileではなく、この場合のループの方が適してdo-whileいます。

    Scanner scan = new Scanner ( System.in );
    String required= "@";
    System.out.println( " Please enter a word with @ " );
    String word = scan.next() ;

    //check if the right word(containing @) is entered, 
    //if not then loop until it is enteres
    while((!word.contains(required)){
        System.out.println( " Please try again " );
        //read the new word as input from the user
        word = scan.next() ;
    }
    //right word is entered, display it
    System.out.println(word);

scan.next()また、 を使用する場合、同じ行に入力すると単語ごとに読み上げられますのでご注意ください。

于 2012-12-11T04:56:31.900 に答える
0

コードの問題は、ループ内の単語を再読み取りしていないことです。このようにループを変更します (コードの変更は最小限に抑えます)。

do {
        word = scan.next();
        if (!word.contains(bad))
            System.out.println(" Please try again ");

        else
            System.out.println(" " + word);
    }
    while (!word.contains(bad));

はい、他の人が指摘しているように、特にネストされた構造でブレースを使用してみてください。

于 2012-12-11T05:04:20.887 に答える