日期:2014-05-20  浏览次数:20932 次

空格在java的控制台输入中究竟扮演着什么样的角色?
import java.util.*;
public class Student1Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
System.out.println("请输入a:");
String a=in.next();
System.out.println("请输入b:");
String b=in.next();
System.out.println("a="+a+"b="+b);
}

}
问题:
当程序运行至String a =in.nexe();时
如果我输入12空格13
则直接出结果
请输入a:
12 13
请输入b:
a=12b=13
为什么会出现这样的结果,我还没输入b值得呀~

------解决方案--------------------
输入空格就相当于你一次性输入了两个参数,
也就是a和b的值你一块输入了。
------解决方案--------------------
Java code

  private static Pattern WHITESPACE_PATTERN = Pattern.compile("\\p{javaWhitespace}+");
public Scanner(InputStream paramInputStream)
  {
    this(new InputStreamReader(paramInputStream), WHITESPACE_PATTERN);
  }

------解决方案--------------------
Scanner类的next方法,输入‘空格’默认为参数输入结束 

例如:当提示你输入a时,输入的是:12 13 14 15;则显示的a=12b=13
后两个参数会被舍弃

可以尝试
System.out.println("请输入a:");
String a = in.nextLine();
System.out.println("请输入b:");
String b = in.nextLine();
这样写会达到你要的效果

以next开头的方法有很多,你可以自己试试玩玩……