用户交互scanner获取用户输入


获取用户的输入:

我们可以通过Scanner类来获取用户的输入

基本语法:

Scanner s=new Scanner(System.in);

基本方法:

next():

1.从此扫描仪查找并返回下一个完整令牌,此方法是一定要读取到有效字符后才可以结束输入

2.而且next方法对查找到有效字符前遇到的空白,会自动的将其清除,直到遇到有效字符再进行返回,但是遇到有效后,他会将有效字符其后面的输入的空白,作为结束符或分隔符

3.next()方法是不能得到带有空格的字符串的,因为他会把有效字符之前的去除,有效字符之后的断掉

  例如:使用next作为接收用户时,输入 以下文字不会返回全部文字

      输入:hello world

      输出:hello

注:因为这个字符串间有空白内容,所以不会返回空白内容后的字符串

nextLine():

1.使此扫描器前进超过当前行并返回跳过的输入

2.结束方式为回车键,也就是说在回车之前输入的所有内容他都是会进行返回的,包括空白内容

hasNext():判断当前对象是否还有下一个输入(是否还有数据输入) 

重点掌握:

示例:next():方式接收输入

import java.util.Scanner;
public class tset{
public static void main(String []args){
Scanner s=new Scanner(System.in);//通过System.in接收用户输入,并封装成scanner对象
System.out.println("使用next方式输入");
//判断用户有没有输入字符串
if(s.hasNext()){//默认为true
//如果用户还有输入。那我们使用next方式接收用户输入
String str=s.next();//使用next方式接收的话,当前输入的文字有空格,他只会返回空格前的语句
System.out.println("输出的内容"+str);
}
//凡是使用到流,如果不关闭就会一直占用资源
s.close();//使用后进行关闭,释放资源

}
}

next()输出示例:
输入:hello world
输出:hello

示例:nextLine():方式接收输入

import java.util.Scanner;
public class tset{
public static void main(String []args){
Scanner s=new Scanner(System.in);//通过System.in接收用户输入,并封装成scanner对象
System.out.println("使用next方式输入");
//判断用户有没有输入字符串
if(s.hasNext()){//默认为true
//如果用户还有输入。那我们使用nextLine方式接收用户输入
String str=s.next();//使用nextLine方式接收的话,当前输入的文字有空格,他也会判断下一行是否有内容,有就会返回
System.out.println("输出的内容"+str);
}
//凡是使用到流,如果不关闭就会一直占用资源
s.close();//使用后进行关闭,释放资源

}
}

next()输出示例:
输入:hello world
输出:hello world

 Scanner进阶:整数和小数据的使用

import java.util.Scanner;
public class HelloWorld {
public static void main(String []args){
Scanner s=new Scanner(System.in);//通过System.in接收用户输入,并封装成scanner对象
    //从键盘接收数据
int i=0;
float f=0.0f;
System.out.println("请输入整数");
//判断用户有没有输入字符串
if(s.hasNextInt()){//默认为true,判断用户输入的是否是整数
 i=s.nextInt();//next:下一个,nextint:下一个整数,代码为,如果输入的是整数就执行操作,不是就不执行
System.out.println("整数为"+i);
}else{
System.out.println("请输入正确的整数");//当之前的语句不成立时,那就执行当前代码
}
//小数输入
System.out.println("请输入小数");
//判断用户有没有输入字符串
if(s.hasNextFloat()){//默认为true,判断用户输入的是否是整数
 f=s.nextFloat();//next:下一个,nextfloat:下一个整数,代码为,如果输入的是整数就执行操作,不是就不执行
System.out.println("小数为"+f);
}else{
System.out.println("请输入正确的小数");//当之前的语句不成立时,那就执行当前代码
}
//凡是使用到流,如果不关闭就会一直占用资源
s.close();//使用后进行关闭,释放资源

}
}

例子:

输入多个数据,并求其总和与平均值,每输入一个数据用回车确认,通过输入非数字来结束并输出结果
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class HelloWorld {
public static void main(String []args){
//我们可以输入多个数据,并求其总和与平均值,每输入一个数据用回车确认,通过输入非数字来结束并输出结果
    Scanner s=new Scanner(System.in);
    //定义和
    double sum=0;
    //计算输入了多少个数字,用来求平均
    int m=0;
    //通过循环判断是否还有输入 ,并且在里进行每次一次求和和统计
    System.out.println("请输入:");
    while(s.hasNextDouble()){//这个whlie表示,如果s.hasNextDouble()这个条件满足就会一直运行,否则退出
        double x=s.nextDouble();//程序运行到这个代码时,已经是输入了第一个数
        List list=new ArrayList();//创建一个list集合
            list.add(x);//把输入的内容存储起来
        
        //对输入的数进行统计存放在m变量中
        m=m+1;
        //
        sum=sum+x;//和就相当等于当前的和+输入的数字,当和为定义的变量sum,初始化为0,输入的数字等于在nextDouble中输入的数字
        System.out.println("你输入了"+m+"数据"+"当前输和为:"+sum+"当前输入数据为:"+x);//为了方便看自己一共输入了多少个数据
    System.out.println("累计输入内容:"+list);//输出输入的内容
    }
    System.out.println("和为:"+sum);
    System.out.println("平均值为:"+sum/m);
    
    s.close();
  }
}

相关