Java中类似C语言中scanf的获取控制台输入
发布者 : 管理员-Adler | 发布时间 : 2019-01-17 19:10:39文章号 : 25 | 阅读量 : 11+1 | AAW值(?) : 0.00 (仅供参考)
从控制台接收一个字符,然后将其打印出来
char ch = (char)System.in.read();
这种情况只能获取char类型
从控制台读取一行字符串
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
这样我们就能获取我们输入的字符串。
三种判断String是否为空的方法:isEmpty(), ""和null的区别
一直以来对String的这三个空挺晕的,刚好同事问我,我也学习下。
从别人博客上看到的是这样的:
isEmpty()
分配了内存空间,值为空,是绝对的空,是一种有值(值= 空)
""
分配了内存空间,值为空字符串,是相对的空,是一种有值(值= 空字串)
null
是未分配内存空间,无值,是一种无值(值不存在)
然而我还是挺晕忽 所以写了个demo验证下~
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String a = new String();
String b = "";
String c = null;
testString(a);
testString(b);
testString(c);
}
private void testString(String str){
if (str == null){
Log.e("testNull", "null");
}
if (str.isEmpty()){
Log.e("testNull", "isEmpty");
}
if (str.equals("")){
Log.e("testNull", "引号");
}
Log.e("testNull", "----------------");
}
再然后str就报空指针错误了~这里可以发现好像isEmpty和""的效果是一样滴啊。
又看了下isEmpty的源码:
public boolean isEmpty() {
return count == 0;
}
就是说只要String的文本数量为0就返回true,而""里面文本数量就是为0。
综上所述:
null是未分配内存空间的“空”~
isEmpty和引号这两个“空”与null相对(即它们 != null),且都是已分配内存(好像差不多一个意思)
最简单方法,利用Scanner获取任意输入
Scanner ms = new Scanner(System.in);
char ch = ms.nextChar();
int mi = ms.nextInt();
String str = ms.nextLine();
float mf = ms.nextFloat();
实例:获取字符串并打印出来
public static void main (String[] args) {
Scanner sn = new Scanner(System.in);
System.out.print("输入字符串: ");
String get = sn.nextLine();
System.out.println("你的输入是: " + get);
}
运行结果:
输入字符串: awawa牛逼呵呵666
你的输入是: awawa牛逼呵呵666