web-dev-qa-db-ja.com

Java文字列入力をスペースで登録するにはどうすればよいですか?

これが私のコードです:

public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  String question;
  question = in.next();

  if (question.equalsIgnoreCase("howdoyoulikeschool?") )
    /* it seems strings do not allow for spaces */
    System.out.println("CLOSED!!");
  else
    System.out.println("Que?");

「学校はどうですか?」と書こうとすると答えは常に「Que?」です。でも「howdoyoulikeschool?」としては問題なく動作します。

入力を文字列以外のものとして定義する必要がありますか?

6
user1687772

in.next()は、スペースで区切られた文字列を返します。行全体を読みたい場合は、in.nextLine()を使用します。文字列を読み取った後、question = question.replaceAll("\\s","")を使用してスペースを削除します。

9
Osiris

これはJavaで入力を取得するサンプル実装です。給与フィールドだけにフォールトトレランスを追加して、それがどのように行われるかを示しています。気づいたら、入力ストリームも閉じる必要があります..お楽しみください:-)

/* AUTHOR: MIKEQ
 * DATE: 04/29/2016
 * DESCRIPTION: Take input with Java using Scanner Class, Wow, stunningly fun. :-) 
 * Added example of error check on salary input.
 * TESTED: Eclipse Java EE IDE for Web Developers. Version: Mars.2 Release (4.5.2) 
 */

import Java.util.Scanner;

public class userInputVersion1 {

    public static void main(String[] args) {

    System.out.println("** Taking in User input **");

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter your name : ");
    String s = input.nextLine(); // getting a String value (full line)
    //String s = input.next(); // getting a String value (issues with spaces in line)

    System.out.println("Please enter your age : ");
    int i = input.nextInt(); // getting an integer

    // version with Fault Tolerance:
    System.out.println("Please enter your salary : ");
    while (!input.hasNextDouble())
    {
        System.out.println("Invalid input\n Type the double-type number:");
        input.next();
    }
    double d = input.nextDouble();    // need to check the data type?

    System.out.printf("\nName %s" +
            "\nAge: %d" +
            "\nSalary: %f\n", s, i, d);

    // close the scanner
    System.out.println("Closing Scanner...");
    input.close();
    System.out.println("Scanner Closed.");      
}
}
1
Mike Q

の代わりに

Scanner in = new Scanner(System.in);
String question;
question = in.next();

入力します

Scanner in = new Scanner(System.in);
String question;
question = in.nextLine();

これは、入力としてスペースを取ることができるはずです。

1
SaniKul

長い間、人々はScanner#nextLine()の使用を提案し続けているので、Scannerが入力に含まれるスペースを取る可能性があります。

クラススキャナー

スキャナーは、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。

Scanner#useDelimiter()を使用して、Scannerの区切り文字をline feedなどの別のパターンに変更できます。

Scanner in = new Scanner(System.in);
in.useDelimiter("\n"); // use LF as the delimiter
String question;

System.out.println("Please input question:");
question = in.next();

// TODO do something with your input such as removing spaces...

if (question.equalsIgnoreCase("howdoyoulikeschool?") )
    /* it seems strings do not allow for spaces */
    System.out.println("CLOSED!!");
else
    System.out.println("Que?");
0
Cà phê đen