zoukankan      html  css  js  c++  java
  • java笔记 -- 输入输出

    读取输入:
    如果想通过控制台进行输入, 首先需要构造一个Scanner对象.并与'标准输入流'System.in关联.
    代码见下文代码块.

    • Sanner (InputStream in)

    用给定的输入流创建一个Scanner对象

    • String nextLine()

    读取输入的下一行内容

    • String next()

    读取输入的下一个单词(以空格作为分隔符)

    • int nextInt()
    • double nextDouble()

    读取并转换下一个表示整数或浮点的字符序列

    • boolean hasNext()

    检测输入中是否还有其他单词

    • boolean hasNextInt()
    • boolean hasNextDouble()

    检测是否还有表示整数或浮点数的下一个字符序列.

    Scanner类输入时可见的, 不适合从控制台读取密码.可使用Console类.
    注意: 只能通过命令行执行, IDE中会报空指针异常.
    Console对象每次只能读取一行, 不方便.

    String char[] readPassword(String prompt, Object...args)
    String String readLine(String prompt, Object...args)
    显示字符串prompt并且读取用户输入, 直到输入行结束.
    args参数可以用来提供输入格式.

    • Console:

    Console cons = System.console();
    String username = cons.readLine("User name: ");
    char[] passwd = cons.readPassword("Password: ");

    为了安全起见, 返回的密码放到一维字符数组中, 而不是字符串中.在对密码进行处理后, 应该马上用一个填充值覆盖数组元素.

    格式化输出:

    double x = 10000.0 / 3.0;
    System.out.print(x); // 3333.3333333333335
    System.out.printf("%8.2f", x); //3333.33
      用8个字符的宽度和小数点后两个字符的精度打印x, 即打印输出一个空格和7个字符.
    System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
      每一个以%字符开始的格式说明符都用相应的参数替换.格式说明符尾部的转换符将指示被格式化的数值类型:

    用于prinf的转换符

       转换符     类型         举例
        d     十进制整数       159     (常用)
        x     十六进制整数      9f
        o     八进制整数       237
        f     定点浮点数       15.9     (常用)
        e     指数浮点数       1.59e+01
        g     通用浮点数        -
        a     十六进制浮点数     0x1.fccdp3
        s     字符串         Hello     (常用)
        c     字符          H
        b     布尔          True
        h     散列码         42628b2
        tx     日期时间        见下表
        %     百分号         %
        n     与平台有关的行分隔符

    package com.picc.sample.firstsample;
    import java.util.Scanner;
    
    public class PrintSample {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            
            // get first input
            System.out.println("What your name?");
            String name = in.nextLine(); // 取输入行的内容, Han Mei Mei ---> Han Mei Mei
    //        String name = in.next();      // 取输入行中第一个空格前面的内容, Han Mei Mei ---> Han
            
            // get second input
            System.out.println("How old are you?");
            int age = in.nextInt(); // 取整数, 20 --->  20
    //        Double age = in.nextDouble(); // 取浮点数, 20 --->  20.0
            
            System.out.println("Hello, " + name +".
    Next year, you'll be " + (age + 1));
            
        }
    }
    // PrintSample .java
    package com.picc.sample.firstsample;
    import java.io.Console;
    
    public class PrintSample {
        public static void main(String[] args) {
            
            Console cons = System.console();
             String username = cons.readLine("User name: ");
             char[] passwd = cons.readPassword("Password: ");
             String password = String.valueOf(passwd);
             System.out.println("Hello, " + username +", you password is: " + password);
        }
    }
    
    // Console直接运行会报错:
     Exception in thread "main" java.lang.NullPointerException
        at com.picc.sample.firstsample.PrintSample.main(PrintSample.java:90)
  • 相关阅读:
    递归遍历树形json
    关于作用域理解的一道题
    微信站 返回上一页并刷新
    Vuex有哪些作用
    两段代码实现vue路由懒加载
    Vuex目录结构推荐
    售后打电话说现场设备出问题了,嵌入式工程师最想干什么?
    Qt编译出现cc1plus.exe: out of memory allocating 65536 bytes问题
    OpenCV计算机视觉编程攻略(第三版)源码
    C++ Json工具--Jsoncpp用法简介
  • 原文地址:https://www.cnblogs.com/qiezuimh/p/9713290.html
Copyright © 2011-2022 走看看