このプログラムは実際にどのように機能しますか...?
import Java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
出力は次のとおりです。
enter the no
1234
no is 1234
enter a string
string is= //why is it not allowing me to enter a string here?
.nextInt()
は次のint
を取得しますが、改行文字は読み取りません。つまり、「次の行」を読み取るように要求すると、最初から改行文字の終わりまで読み取ることになります。
これを修正するためにint
を取得した後、別の.nextLine()
を挿入できます。または(私はこの方法を好む)、int
をstring
として読み取り、int
に解析します。
これはよくある誤解であり、nextInt()を使用した直後にnextLine()に同じScannerを使用すると混乱を招きます。
カーソルを自分で次の行にジャンプして修正するか、整数に別のスキャナーを使用することができます。
オプションA:2つの異なるスキャナーを使用
import Java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner intscan =new Scanner(System.in);
System.out.println("enter a no");
a=intscan.nextInt();
System.out.println("no is ="+a);
Scanner textscan=new Scanner(System.in);
System.out.println("enter a string");
s=textscan.nextLine();
System.out.println("string is="+s);
}
}
オプションB:次の行にジャンプする
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan =new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
scan.nextLine();
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
これは、nextInt()の実行が完了した後、nextLine()メソッドが呼び出されると、nextInt()の後に存在する改行文字をスキャンするためです。これは、次のいずれかの方法で実行できます。
次のメソッドをスキャナーオブジェクトで使用できます。
scan.next();
String
を読み取るには、scan.next()
を使用するだけです。
temporaryscan.nextLine();
を使用します。これは\ n文字を消費します
NextLine()でテキストをスキャンしようとしないでください。同じスキャナーでnextInt()を使用した後! Javaスキャナー、および多くのJava開発者は整数に別のスキャナーを使用することを選択します。これらのスキャナーをscan1およびscan2と呼ぶことができます。あなたが欲しい。
Scan.nextLine()を使用して入力文字列を取得すると、スキャナーのバッファーがいっぱいになります。そのため、次回は入力をスキップします。解決策は、Scannerの新しいオブジェクトを作成できることです。オブジェクトの名前は前のオブジェクトと同じにすることができます......
パーサーを使用したくない場合:
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is =" + a);
scan.nextLine(); // This line you have to add (It consumes the \n character)
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is=" + s);
\ n文字を消費する簡単なソリューション:
import Java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
scan.nextLine();
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
Nextintを使用したくない場合は、inputstream
およびreadline
関数を使用して文字列を読み取るバッファー付きリーダーを使用することもできます。
import Java.util.*;
public class ScannerExample {
public static void main(String args[]) {
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is =" + a);
System.out.println("enter a string");
s = scan.next();
System.out.println("string is=" + s);
}
}