2016-10-08 8 views
0

これは私が働いていますが、それを別の方法でしたいのです。スキャナーで文字列を分割する

System.out.print("Enter the car's Year, Make and Model: "); 
String scyear = scan.nextLine(); 
String scmake = scan.nextLine(); 
String scmodel = scan.nextLine(); 
NewCar test = new NewCar(scyear, scmake, scmodel); 

これは私が欲しいものです:ユーザーは、Javaプログラムを実行し、それが求められます。

Enter the car's Year, Make and Model: 

私は次のように入力します。

2011 Honda Civic 

それは、私のように入力されたスペースを使用しますコンストラクタに正しく入れる変数を分離する方法。入力した1行の文字列から3つの別々の変数に区切られます。

答えて

1

Scanner.nextメソッドを使用すると、次の完全なトークンをスキャナから取得できます。

public String next()

発見し、このスキャナから次の完全なトークンを返します。ここでは文書の抜粋です。

メソッドがオーバーロードされているように、これは、デフォルトでは空白で区切られ、したがって、あなたがこれを行うことができます:

Enter the car's Year, Make and Model: 2011 Honda Civic 

nextは基本的に行います:入力を考えると

System.out.print("Enter the car's Year, Make and Model: "); 
String scyear = scan.next(); 
String scmake = scan.next(); 
String scmodel = scan.next(); 
NewCar test = new NewCar(scyear, scmake, scmodel); 

Enter the car's Year, Make and Model: 2011 Honda Civic 
             ^^^^ ^^^^^ ^^^^^ 

It wil私は次のトークンを得ます。 nextを呼ぶことで、2011年もまたホンダを手に入れて、最終的にシビックを貰えるでしょう。また、配列を分割してサブスクリプションを使用して取得することもできますが、速度は遅くなる可能性があります。

+0

これはあなたの答えです。 –

0

代わりのscan.nextLine()を使用して、scan.next()

System.out.print("Enter the car's Year, Make and Model: "); 
    String scyear = scan.next(); 
    String scmake = scan.next(); 
    String scmodel = scan.next(); 

を使用します(スペースで区切って)あなたが入力した次の3つのものが自動的にscyearscmakescmodelに割り当てられているものになります。ほとんどの場合、それは非常に迷惑ですが、この場合、あなたの好みに合わせて使用​​することができます。 X、Y座標、緯度経度を入力するときにも便利です。

1
String myCarData[]=scan.nextLine().split(" "); 
NewCar test=new NewCar(myCarData[0],myCarData[1],myCarData[2]);