用户交互Scanner

用户交互scanner

1.用户输出完内容回车后程序自行停止

package jie.Scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {

        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用next方式接收:");

        //判断用户有没有输入字符串
        if (scanner.hasNext()){ //使用next方式接收
            String str = scanner.next();//程序会等待用户输入完毕
            System.out.println("输出的内容为:"+str);
        }

        scanner.close();//凡是属于io流的类如果不关闭会一直占用资源,建议用完就关闭


    }
}

1、首先的一个区别是:

nextInt()读取结果为一个int类型数据,返回int值

nextFloat()读取结果为float类型,返回float值

next()读取结果为String类型,返回string类型

next Line()读取结果为String类型,返回string类型

2、回车符之间的区别

 其实我们发现next(),nextInt()和nextFloat()看到空格符或回车符都认为读取结束,此时不会读取回车符。
    意思就是回车符只会留在这里等待下一个可以读取回车符号的读取流来把这个回车符接收掉
 nextLine()也是以回车符为结束,并且只是以回车符结束,并且会读取回车符。

分析:这里我们首先看到,我这里是故意把nextInt()放在了nextLine()前面,目的就是测试这个回车符读取的问题。

当我们首先输入数字的时候,因为nextInt()只会以为空格和回车符结束,但是此时按下了回车,next()不会读取回车符,但是接下来的nextLine()会读取回车符,又因为nextLine()以回车符结束,所以此时直接就跳过了我们输入,程序直接结束了。

解决方式:

我们先使用nextLine()方法来读取输入,然后再进行接收数据的类型转换就可以顺利解决了!

package jie.Scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {

        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextline方式接收:");

        //判断用户有没有输入字符
        if (scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输出的内容为:"+str);

        }

        scanner.close();

    }
}

3.针对不同类型的数进行输出

package jie.Scanner;

import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //从键盘上接收数据
        int i = 0;
        float e = 0.0F;

        System.out.println("请输入整数:");

        if (scanner.hasNextInt()){
             i = scanner.nextInt();
             System.out.println("整数数据:" + i);
        }else {
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");

        if (scanner.hasNextFloat()){
            e = scanner.nextFloat();
            System.out.println("小数数据:" + e);
        }else {
            System.out.println("输入的不是小数数据!");
        }


        scanner.close();
    }

}
package jie.Scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字结束输入并输出执行结果
        Scanner scanner = new Scanner(System.in);

        //和
        double sum = 0;
        //计算输入了多少个数字
        int m =0;

        //通过循环判断是否还有输入,并在里面对每一次进行求和统计
        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m = m + 1;
            sum = sum + x;
            System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);

        }
        System.out.println(m + "个数的和为" +sum);
        System.out.println(m + "个数的平均值是" + (sum / m));

        scanner.close();



    }

}
posted @ 2022-03-08 21:18  奶茶我选优乐美  阅读(41)  评论(0)    收藏  举报