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

 

转载于:https://www.cnblogs.com/SaraMoring/p/5851247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值