文本浏览器

Java中类似C语言中scanf的获取控制台输入

发布者 : 管理员-Adler | 发布时间 : 2019-01-17 19:10:39
文章号 : 26 | 阅读量 : 16+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






评论加载中...

+ 参与讨论