使用Scanner拆分字符串

时间:2016-10-08 01:00:40

标签: java java.util.scanner

这就是我的工作方式,但却希望采用不同的方式。

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个独立变量分开。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以使用Scanner.next方法,该方法从扫描程序中检索下一个完整令牌。这是文档的片段:

  

public String 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

next基本上会:

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

它将从输入中获取 next 标记。致电next将获得2011年,再次将给你本田,最后将给你思域。或者,您可以将行拆分为数组,并使用订阅进行检索,但速度可能较慢。

答案 2 :(得分: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();

您输入的下三个内容(按空格分隔)将自动分配给scyearscmakescmodel。在大多数情况下,它非常烦人,但在这种情况下,你可以使用它对你有利。输入X,Y坐标和纬度/经度时也很有用。