これが私のコードです:
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?」としては問題なく動作します。
入力を文字列以外のものとして定義する必要がありますか?
in.next()
は、スペースで区切られた文字列を返します。行全体を読みたい場合は、in.nextLine()
を使用します。文字列を読み取った後、question = question.replaceAll("\\s","")
を使用してスペースを削除します。
これは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.");
}
}
の代わりに
Scanner in = new Scanner(System.in);
String question;
question = in.next();
入力します
Scanner in = new Scanner(System.in);
String question;
question = in.nextLine();
これは、入力としてスペースを取ることができるはずです。
長い間、人々は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?");