3
4

3 に答える 3

2

まず、 はorメソッドによる書式設定を既にサポートしているためSystem.out、 a でラップする必要はありません。PrintStreamoutformat()printf()

次に、データの行を入力すると、新しい行 で終了することも理解する必要があります\nnext<Type>()メソッドは のみを消費し、他には何も消費し<Type>ません。したがって、next<Type>()呼び出しが に一致する可能性がある場合は、余分な新しい行を前に別の行で\nスキップする必要があります。 \nnextLine()

修正を加えたコードは次のとおりです。

  int num;
  double num2;
  String name;
  char c;

  Scanner sc = new Scanner(System.in);

  //for integer
  System.out.print("Enter a number: ");
  num = sc.nextInt();
  System.out.printf("%d\n", num);

  //for float
  System.out.print("Enter a float value: ");
  num2 = sc.nextDouble();
  System.out.printf("%.2f\n", num2);

  //for name w/o white space
  System.out.print("Enter your first name: ");
  name = sc.next();
  System.out.printf("Hello %s, welcome to Scanner\n", name);

  //for character
  System.out.print("Enter a character: ");
  c = sc.findWithinHorizon(".", 0).charAt(0);
  System.out.printf("%c\n", c);

  sc.nextLine(); // skip

  //for name w/ white space
  System.out.print("Enter your full name: ");
  name = sc.nextLine();
  System.out.printf("%s", name);
于 2013-08-04T18:20:30.143 に答える
0

Scanner.next(Pattern)および passを使用しPattern.compile("[A-Za-z0-9]")て、スキャナが定義された 1 文字のみを受け入れるようにします。
任意の正規表現を引数として渡し、スペースを含む次の行のnext()をチェックできます
Scanner.next();

于 2013-08-04T17:44:55.103 に答える