ユーザーが自分のデータを入力して出力できるようにするプログラムを書いています。その3/4は正しいが、住所の出力に到達すると、Wordのみが印刷され、「Archbishop Street」から「Archbishop」とのみ言うことができます。どうすれば修正できますか?
import Java.util.*;
class MyStudentDetails{
public static void main (String args[]){
Scanner s = new Scanner(System.in);
System.out.println("Enter Your Name: ");
String name = s.next();
System.out.println("Enter Your Age: ");
int age = s.nextInt();
System.out.println("Enter Your E-mail: ");
String email = s.next();
System.out.println("Enter Your Address: ");
String address = s.next();
System.out.println("Name: "+name);
System.out.println("Age: "+age);
System.out.println("E-mail: "+email);
System.out.println("Address: "+address);
}
}
このアプローチは機能していますが、どのように機能するのか、誰にも説明できません。
String s = sc.next();
s += sc.nextLine();
この方法でスキャナを初期化し、改行文字を使用して入力を区切るようにします。
Scanner sc = new Scanner(System.in).useDelimiter("\\n");
詳細については JavaDoc を参照してください
Sc.next()を使用して、文字列の行全体を取得します
私は使うだろう - Scanner#nextLine
next
属性のaddress
とは反対です。
このメソッドは、現在の行の残りを返します。末尾の行区切り文字は除きます。
これにより、行区切り文字で区切られた行全体が返されるため、ユーザーは制約なしで任意のアドレスを入力できます。
Scannerのデフォルトの区切り文字は空白です。これを変更する方法については、 javadoc を確認してください。
String s="Hi";
String s1="";
//For Reading Line by hasNext() of scanner
while(scan.hasNext()){
s1 = scan.nextLine();
}
System.out.println(s+s1);
/*This Worked Fine for me for reading Entire Line using Scanner*/
System.in
およびSystem.out
を直接使用する代わりに、 Console
クラスを使用します-プロンプトを表示し、行全体を読み取ることができます(それにより、問題を修正します) )1回の呼び出しでの入力:
String address = System.console().readLine("Enter your Address: ");
私は次のコードを試しましたが、ブレーク条件がないので停止していませんので、常に入力を待っています、ブレークの条件を追加できるかもしれません
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
String s="";
while(scan.hasNext())
{
s=scan.nextLine();
}
System.out.println("String: " +s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
import Java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
String s="";
while(scan.hasNext())
{
s=scan.nextLine();
}
System.out.println("String: " +s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
Scan.nextLineを使用して簡単に実行できます。最後まで入力の残りを読み取ります。次に、それを変数に割り当てます。文全体を簡単に印刷できます。理解を深めるための例を次に示します。
String s = "HackerRank ";
Scanner scan = new Scanner(System.in);
String s2;
scan.nextLine(); // read the rest of the line of input (newline character after the double token).
s2 = scan.nextLine();
/* Concatenate and print the String variables on a new line integer variables on a new line;
System.out.println(s + s2);
scan.close();
}}
import Java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
s += scan.nextLine();
System.out.println("String: " + s);
}
}
Java.util.Scanner; util-パッケージ、スキャナー-クラス
next()
は、スペースの前の文字列を読み取ります。最初のスペースを取得した後は何も読み取れません。nextLine()
は行全体を読み取ります。行末または「/ n」まで読み取ります。 注:次の行ではありません(例)
人生における私の使命は、単に生き残ることではなく、成功することです。
そして、いくらかの情熱、思いやり、ユーモアでそうすること。
(出力)
俺の
人生における私の使命は、単に生き残ることではなく、成功することです。
トリック:
次の行を読みたい場合は、Java has
メソッドを確認してください。
while (scanner.hasNext()) {
scan.next();
}
while (scanner.hasNext()) {
scan.nextLine();
}
以下は、Java Scannerクラスを使用して標準入力の行を読み取るサンプルコードです。
import Java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(s);
scan.close();
}
}
入力:
こんにちは世界
出力:
こんにちは世界
「Wordを印刷するだけで、「Archbishop Street」から「Archbishop」とだけ言うことができます」
Next()、nextInt()などのScanner関数は、一度にトークンのみを読み取るため、Wordを印刷するだけです。したがって、この関数は次のトークンを読み取って返します。
For example if you have: x y z
s.next() will return x
s.nextLine() y z
「Archbishop Street」という行全体を読みたい場合は、コードに戻ります
String address = s.next(); // s = "Archbishop"
Then address += s.nextLine(); // s = s + " Street"
トークン区切り文字を改行パターンに設定し、次のトークンを読み取ってから、区切り文字を元の文字に戻します。
public static String readLine(Scanner scanner) {
Pattern oldDelimiter = scanner.delimiter();
scanner.useDelimiter("\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029]");
String r = scanner.next();
scanner.useDelimiter(oldDelimiter);
return r;
}
以下のコードは、あなたが探していることをするはずです:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(s);
scan.close();
}
アドレス全体を追加するには
s.nextLine();//read the rest of the line as input
前
System.out.println("Enter Your Address: ");
String address = s.next();