2

:D 私は完全に Java の初心者で、現在は基本的な例を作成しています (Java 1.7 と Eclipse IDE を使用)。

以下のコードを試してみました。ユーザー入力を受け取り、最後に表示する必要があります。

package loop;
import java.util.Scanner;

public class MainClass {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner user_input = new Scanner( System.in );

    String name;
    System.out.print("What is yout name?: ");
    name = user_input.next();

    String quest;
    System.out.print("What is your quest?: ");
    quest = user_input.next();

    String color;
    System.out.print("What is your favourite color?: ");
    color = user_input.next();

    String sentence;
    sentence = "Your name is" + " " + name + " " + ",and your quest is" + " " + quest + " " + ",and your favourite color is" + " " + color;

    System.out.println(sentence);





    }

}

ここのように入力に1つの単語のみを使用すると、すべてが正常に機能します

What is yout name?: Marko
What is your quest?: seeking
What is your favourite color?: green
Your name is Marko ,and your quest is seeking ,and your favourite color is green

しかし、複数の単語を入力するとすべてが失敗します:

What is yout name?: Marko Scekic
What is your quest?: What is your favourite color?: seeking blue
Your name is Marko ,and your quest is Scekic ,and your favourite color is seeking

What is yout name?: Marko
What is your quest?: seeking for Holy grail
What is your favourite color?: Your name is Marko ,and your quest is seeking ,and your favourite color is for

私は自分の力ですべてを試しました(printをprintlnに置き換えて逆にし、質問の順序を変更しようとしました..)。

4

4 に答える 4

1

スキャナーを使用する場合は、スキャナーのメソッドを使用してnextLine()行全体を取得する必要があります。スペースを含む行全体を読み取ります。メソッドを使用するとnext()、最初のスペースまでしか読み取れなくなり、停止します。

String name;
System.out.print("What is yout name?: ");
name = user_input.nextLine();
//etc...

Java ドキュメントへのリンク

于 2013-11-11T15:12:00.933 に答える
1

Reimeus が言ったことを拡張するには:スキャナーから次のトークンScanner.next()を返します。基本的に、空白はトークン間の区切り文字と見なされます。つまり、「Marko Scekic」は 2 つの異なるトークンです。「Marko」が最初で、「Scekic」が 2 番目です。

次のように考えているかもしれません: まず、コードは System.out.println("What is your name?"); を実行します。次に、を使用してユーザーに情報を要求し、別のnext()ものを出力するSystem.out.println()ので、2 つの呼び出しnext()の間に入力されたすべての情報が表示されるはずです。println()

残念ながら、Scanner クラスは System.out.println() が呼び出されたかどうかについてまったく知りません。その観点からは、以下はまったく同じです。

String name;
System.out.print("What is yout name?: ");
name = user_input.next();

String quest;
System.out.print("What is your quest?: ");
quest = user_input.next();

String name;
name = user_input.next();

String quest;
quest = user_input.next();

言い換えれば、 を使用しSystem.out.println()て印刷しても、何の影響もありnext()ません。

したがって、 とは異なるものを使用するかScanner、Reimus が言ったように を使用する必要がありnextLine()ます。

于 2013-11-11T15:12:21.203 に答える