zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5851247.html
Copyright © 2011-2022 走看看