用户交互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();//程序运行到这个代码时,已经是输入了第一个数 Listlist=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(); } }