• java控制台输入输出


    一、比较传统的输入方法用输入流,得到字符串后要另行判断、转换

    案例

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class MainRun {
        public static void main(String[] args) {
            try {
                BufferedReader bufferedReader = new BufferedReader(
                        new InputStreamReader(System.in));
                System.out.println("请输入一个整数:");
                String str1 = bufferedReader.readLine();
                Integer int1 = Integer.valueOf(str1);
                System.out.println("输入的整数是:" + int1);
    
                System.out.println("请输入一个浮点数:");
                String str2 = bufferedReader.readLine();
                Double double1 = Double.valueOf(str2);
                System.out.println("输入的浮点数是:" + double1);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    请输入一个整数:
    234
    输入的整数是:234
    请输入一个浮点数:
    23
    输入的浮点数是:23.0

    二、JDK5以后有了Scanner处理控制台输入

    格式1: Scanner sc = new Scanner(new BufferedInputStream(System.in)); 

    格式2: Scanner sc = new Scanner(System.in); 

    在有多行数据输入的情况下,一般这样处理:

     while(sc.hasNextInt()){...} 或者 while(sc.hasNext()){} 

    读入一个字符串: String str = sc.next(); 

    读入一整行数据: String lineString=sc.nextLine(); 

    读入一个布尔值: boolean boolenaNumber = sc.nextBoolean(); 

    读入一个字节型数据: byte byteNumbe = sc.nextByte(); 

    读入一个短整型数据: short shortNumber=sc.nextShort(); 

    读入一个整数: int intNumber = sc.nextInt(); 

    读入一个长整型数据: long longNumber=sc.nextLong(); 

    读入一个单精度浮点数: float floatNumber=sc.nextFloat(); 

    读入一个双精度浮点数: double doubleNumber=sc.nextDouble(); 

    对于计算代码运行时间:

    long startTime = System.nanoTime();
    // … the code being measured …
    long estimatedTime = System.nanoTime() - startTime;

    输入案例:

    输入数据有多组,每组占2行,第一行为一个整数N,指示第二行包含N个实数

            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                int n = sc.nextInt();
                for(int i=0;i<n;i++)
                {
                    double a=sc.nextDouble();
                    ...           
                }    

    三、输出:

    输出内容:System.out.print(""); 

    输出内容并换行:System.out.println(""); 

    格式化输出: System.out.format(String format, Object ... args); 

    等价于    System.out.printf((String format, Object ... args); 

    各种格式化样式说明:http://www.cnblogs.com/zhangpengshou/p/3699744.html

    格式化输出案例:

            // System.out.printf(format, args);format为指定的输出格式,args参数
            System.out.printf("%+8.3f
    ", 3.14); // "+"表示后面输出的数字会有正负号,正的+,负的-
                                                    // ;8.3f表示输出浮点数,宽度为8,小数点保持3位有效
            System.out.printf("%+-8.3f
    ", 3.14);// "-"表示靠左对齐
            System.out.printf("%08.3f
    ", 3.14);// "0"8位宽度中自动补0
            System.out.printf("%(8.3f
    ", -3.14);// "("如果是负数,自动加上( )
            System.out.printf("%,f
    ", 123456.78); // ","金钱表示方法,每三位有一个逗号
            System.out.printf("%x
    ", 0x2a3b); // 输出16进制数
            System.out.printf("%#x
    ", 0x2a3b);// 输出带0x标识的16进制数
            System.out.printf("老板:您名字%s,年龄:%3d岁,工资:%,-7.2f
    ", "ajioy", 21,
                    36000.00);
            System.out.printf("老板:您名字%1$s,年龄:%2$#x岁
    ", "ajioy", 38); // "n{1}quot;表示用第n个参数

    输出结果:

       +3.140
    +3.140
    0003.140
       (3.140)
    123,456.780000
    2a3b
    0x2a3b
    老板:您名字ajioy,年龄: 21岁,工资:36,000.00
    老板:您名字ajioy,年龄:0x26岁

    五、规格化输出

    SimpleDateFormat:SimpleDateFormat是DateFormat的子类,用于格式化日期时间。

            SimpleDateFormat myFmt = new SimpleDateFormat(
                    "yyyy年MM月dd日 HH时mm分ss秒 E ");
            System.out.println(myFmt.format(new Date()));

    输出结果:

    2016年09月08日 17时34分01秒 星期四 

    DecimalFormat:DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。

    DecimalFormat案例:

            DecimalFormat df1 = new DecimalFormat("0.0");
            DecimalFormat df2 = new DecimalFormat("#.#");
            DecimalFormat df3 = new DecimalFormat("000.000");
            DecimalFormat df4 = new DecimalFormat("###.###");
            System.out.println(df1.format(12.34));
            System.out.println(df2.format(12.34));
            System.out.println(df3.format(12.34));
            System.out.println(df4.format(12.34));

    输出结果:

    12.3
    12.3
    012.340
    12.34

    注意:

    在线编程类名是public class Main

  • 相关阅读:
    freemarker模板引擎 常用标签
    SSH面试题
    JAVA 2013面试题-下
    JAVA 2013面试题-上
    String和StringBuffer
    http请求和http响应详细解析
    一种将汉字转换为拼音的更简单的方法
    中文字符串排序
    UIControl类控件统一管理
    日期转换
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5851247.html
Copyright © 2020-2023  润新知