Java开发--11--读取输入

1、常规读取输入

1.1 读取控制台输入

Java的控制台输入由System.in完成。

为了获得一个绑定到控制台的字符流,建议把System.in包装在BufferedReader对象中来创建一个字符流。

下面是创建BufferedReader的基本语法:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

BufferedReader对象创建后,使用read()方法从控制台读取一个字符,或者用readLine()方法读取一个字符串。

1.2 read()方法读取字符

read()方法从输入流读取一个字符并把该字符作为整数值返回。当流结束的时候返回-1。该方法抛出IOException。

代码实例:

import java.io.*;

public class Main {
     
    // 在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样在调用方法时
    // 就知道该方法有异常,且必须在程序中对异常进行处理,否则编译无法通过
    // 流结束时抛出异常IOException,所以此处要这样写
    public static void main(String[] args) throws IOException
    {
     
        char c;
        // 使用System.in创建BufferedReader
        // 输入字符串。按回车键结束
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入字符, 按q退出");

        // 逐一读取字符串,如果读取到q则退出
        do {
     
            c = (char) br.read();
            System.out.println(c);
        } while(c != 'q');
    }
}

-----------------------------------------------------------------
输出结果如下:
输入字符, 按q退出
123qwe  (输入的字符串,按回车键结束)
1
2
3
q  (逐一读取字符串,到q退出,所以we读取不到)

1.3 readLine()方法读取一个字符串

代码实例:

import java.io.*;

public class Main {
     
    // 在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样在调用方法时
    // 就知道该方法有异常,且必须在程序中对异常进行处理,否则编译无法通过
    // 流结束时抛出异常IOException,所以此处要这样写
    public static void main(String[] args) throws IOException
    {
     
        // 使用System.in创建BufferedReader
        // 输入字符串。按回车键结束
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        System.out.println("输入字符串,以qqq结束");
        
        // 读取字符串,如果是qqq则结束
        do {
     
            str = br.readLine();
            System.out.println(str);
        } while(!str.equals("qqq"));
    }
}

-----------------------------------------------------------------
输出结果如下:
输入字符串,以qqq结束
we are family qqq shabi   (输入的字符串,里面有qqq,但不会退出)
we are family qqq shabi   (读取的字符串)
qqq   (输入的字符串,只有qqq,符合条件则退出)
qqq   (读取的字符串)

2、Scanner类读取输入

2.1 读取控制台输入

也通过Scanner类来获取用户的输入。下面是创建Scanner对象的基本语法:

Scanner s = new Scanner(System.in); 

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNexthasNextLine判断是否还有输入的数据。

2.2 next()方法读取一个字符串

代码实例:

import java.util.Scanner;

public class Main {
     
    public static void main(String[] args) {
     
        // 创建Scanner对象,从键盘接收数据,按回车键结束
        Scanner scan = new Scanner(System.in);
        System.out.println("next方法接收:");

        // 判断是否还有输入,如果遇到空格就退出
        if(scan.hasNext()){
     
            String str1 = scan.next();
            System.out.println("输入的数据为:"+str1);
        }
    }
}

-----------------------------------------------------------------
输出结果如下:
next方法接收:
we are family   (我们输入的字符串)
输入的数据为:we   (遇到空格就退出,所以只接收到了we)

2.3 nextLine()方法读取一个字符串

代码实例:

import java.util.Scanner;

public class Main {
     
    public static void main(String[] args) {
     
        // 创建Scanner对象,从键盘接收数据,按回车键结束
        Scanner scan = new Scanner(System.in);
        System.out.println("nextLine方法接收:");

        // 判断是否还有输入,读取所有字符串
        if(scan.hasNextLine()){
     
            String str2 = scan.nextLine();
            System.out.println("输入的数据为:"+str2);
        }
    }
}

-----------------------------------------------------------------
输出结果如下:
nextLine方法接收:
we are family   (我们输入的字符串)
输入的数据为:we are family   (接收所有字符)

2.4 next()与nextLine()区别

next():

1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。

nextLine():

1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。

你可能感兴趣的:(Java开发)