控制台I/O-标准输入读取数据-格式化输入,日期

Posted 非凡起航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制台I/O-标准输入读取数据-格式化输入,日期相关的知识,希望对你有一定的参考价值。

一、设备分类

1.标准输入设备:键盘

2.标准输出设备:终端窗口

3.标准错误设备:通常也使用终端窗口

二、Java语言使用java.lang.System类中的三个公共静态变量来支持

1.System.in:是InputStream对象,指用户键盘。

2.System.out:PrintStream 对象,指启动Java应用程序的终端窗口,PrintStream是OutputStream流的子类。

3.System.err:PrintStream 对象,指启动Java应用程序的终端窗口。

重新定义流,使其指向其他流目标:System.setIn(),System.setOut(),System.setErr();

三、标准输入读取数据

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


public class SystemIn {
    //标准输入读取数据
    public static void main(String[] args) {
        System.out.println("hello");//访问标准输出设备
        System.err.println("hello err");//访问标准错误设备
        
        InputStream is = System.in;
        InputStreamReader isr  = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        try {
            
            String line = br.readLine();
            while(line != null){
                System.out.println(line);
                line = br.readLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        
    }

}

四、格式化输入

 

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;


public class ScannerIn {
    //格式化输入  文本扫描器
    public static void main(String[] args) {
        
        File file = new File("");
        
        
        InputStream is = System.in;
        try {
            Scanner scanner = new Scanner(is);
            //Scanner scanner = new Scanner(file);
            
            while(scanner.hasNext()){
                
                if(scanner.hasNextInt()){
                    int i = scanner.nextInt();
                    System.out.println("整数: "+i);
                }else if(scanner.hasNextDouble()){
                    Double d = scanner.nextDouble();
                    System.out.println("小数: "+d);
                }else{
                    String s = scanner.next();
                    System.out.println("字符串: "+s);
                }
                
            }
            scanner.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }


}

 五、格式化输出

%s       格式化成字符串,toString();

%b    参数为null返回false,如果参数为Boolean值或者为Boolean,结果为false或true否则为true

%c       一个字符(char),Unicode字符。

%d    有符号十进制整数(int)

%o    无符号八进制整数

%x    使用十六进制数字0f的无符号十六进制整数

%f     单精度浮点数(默认float)、十进制记数法(%.nf  这里n表示精确到小数位后n位.十进制计数)

%g    科学计数法

%n      换行符

%%     打印一个百分号

1.%:表示格式说明的起始符号,不可缺少。

2.-:有-表示左对齐输出,如省略表示右对齐输出。

3.0:有0表示指定空位填0,如省略表示指定空位不填。

4.m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

5.l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

double d = 345.678;  
String s = "hello!";   
int i = 1234;  
//"%"表示进行格式化输出,"%"之后的内容为格式的定义。  
System.out.printf("%f",d);//"f"表示格式化输出浮点数。  
System.out.printf("%9.2f",d);//"9.2"中的9表示输出的长度,2表示小数点后的位数。  
System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。  
System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。  
System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。  
System.out.printf("%d",i);//"d"表示输出十进制整数。  
System.out.printf("%o",i);//"o"表示输出八进制整数。  
System.out.printf("%x",i);//"d"表示输出十六进制整数。  
System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。  
System.out.printf("%s",s);//"d"表示输出字符串。  
System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);//可以输出多个变量,注意顺序。  
System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);//"X$"表示第几个变量。 

 

 六、格式化日期

1.例子

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String datestr = sdf.format(new Date());

 

以上是关于控制台I/O-标准输入读取数据-格式化输入,日期的主要内容,如果未能解决你的问题,请参考以下文章

I/O流,标准输入输出流,序列反序列,线程,进程概念

管道及I/O重定向

初学Linux之标准I/O和管道

低级输入输出

Unix下可用的五种 I/O 模型

10标准I/O输入输出重定向及管道