3.7.1 读取输入

Posted avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.7.1 读取输入相关的知识,希望对你有一定的参考价值。

    前面已经看到,打印输出到“标准输出流”(即控制台窗口)是一件废话从那个容易的事情,只要调用System.out.println即可。然而,读取“标准输入”System.in就没那么简单了。要想通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。
 
        Scanner in= new Scanner(System.in);
 
    现在,就可以使用Scanner类的各种方法实现输入操作了。例如,nextLine方法将输入一行。
 
                        import java.util.Scanner;
            System.out.println("What‘s your name ?");
            Scanner in = new Scanner(System.in);
            String s = in.nextLine();
            System.out.println(s);
 
    在这里,使用nextLine方法是因为在输入行中有可能包含空格。想要读取一个单词(以空白符作为分隔符),就调用
        String firstName = in.next() ;
 
    要想读取一个证书,就用nextInt方法。
        int age = in.nextInt();
 
    于此类似,要想读取下一个浮点数,就调用nextDouble方法。
 
    在程序清单3-2的程序中,询问用户姓名和年龄,然后打印一条如下格式的消息:
        Hello, Cay Next year, you‘ll be 57
 
              System.out.println("What‘s your name ?");
            Scanner in = new Scanner(System.in);
            String name = in.nextLine();
            int age = in.nextInt();
            System.out.println("Hello"+", "+name+", "+"Next year"+", you‘ll be "+(age+1));
 
            //What‘s your name ?
            //Mark
            //28
            //Hello, Mark, Next year, you‘ll be 29
 
 
最后,需要注意的是 Scanner类定义在java.util包中。当使用的类不是定义在基本java.lang包中时,一定要使用import指示符将相应的包加载进来。有关包与import指示字的详细描述在下章。
 
 
因为输入时可见的,所以Scanner类不适用于从控制台读取密码。Java SE 6特别引入了Console类实现这个目的。要想读取一个密码,可以采用下列代码:
        Console cons = System.console();
        String username = cons.readLine("User name: ");
        char[] passwd = cons.readPassword("Password: ");
 
            Console cons = System.console();
            String username = cons.readLine("User name: ");
            char[] passwd = cons.readPassword();
            System.out.println("Username:" + username + " Password:" + passwd);
            
            java.util.Arrays.fill(passwd, ‘ ‘);
            System.out.println(cons);
 
 
System.console() returns null if there is no console.
 
 
java.util.Scanner 5.0
 
方法名 返回类型 说明
Scanner(InputStream in)   用给定的输入流创建一个Scanner对象
nextLine() String 读取输入的下一行内容
next() String 读取输入的下一个单词(以空格作为分隔符)
nextInt() int 读取一个整型数字
nextDouble() double 读取并转换下一个表示整数或浮点数的字符序列
hasNext() boolean 检测输入中是否还有其他单词
hasNextInt() boolean 检测输入中是否还有其他整数
hasNextDouble() boolean 检测输入中是否还有其他浮点数
 
java.lang.System
 
    static Console console()
    如果有可能进行交互操作,就通过控制台窗口为交互的用户返回一个Console对象,否则返回null。对于任何一个通过控制台窗口启动的程序,都可使用Console对象。否则,其可用性将与所使用的系统有关。
 
java.io.Console
    static char[] readPasswrod(String  prompt,object...args)
    static String readLine(String prompt, object...args)
    显示字符串prompt并且读取用户输入,直到输入结束。args参数可以用来提供输入格式。

以上是关于3.7.1 读取输入的主要内容,如果未能解决你的问题,请参考以下文章

go:读取标准输入

字节输入流读取字节数据和字节输入流一次读取多个字节

在Shell脚本中,读取键盘输入的内容并将其赋值给Shell变量的命令是啥?

linux shell读取文件每一行加入用户输入

有啥想法可以像读取代码一样读取用户输入吗?

字符输入流读取文本文件ReaderFileReaderBufferedReader