Scaner的基本概念

  • 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。
  • java.tuil.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。
  • 可以进行键盘输入数据,到程序的当中

基本语法:

Scanner sr=new Scanner(System.in);
//System.in表示输出,是一个参数

注意事项:

  • 通过Scanner类的next()与nexLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
  • 凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
1.使用next() 的方式来接收字符串(使用频率较少)

注意:

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

代码如下

public static void main(String[] args) {
Scanner sr=new Scanner(System.in);
//System.in表示输出,是一个参数
System.out.println("使用next 的方式来接收");
if (sr.hasNext()==true){
//判断用户有没有输入字符串
String str= sr.next();
System.out.println("输入的内容为"+str);
} sr.close();
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
}
2.使用nextLine()的方式来接收字符串
  1. 以Enter为结束符也就说nextLine()方法返回的是输入回车之前的所有字符.
  2. 可以获取空白.
public static void main(String[] args) {

    Scanner sr = new Scanner(System.in);
System.out.println("使用nextLine方式接收数据:"); if (sr.hasNextLine()){
String str = sr.nextLine();
System.out.println("输出的内容为:"+str);
}
sr.close();
}

不判断写法

public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
System.out.println("请输入数据:");
String str = sr.nextLine();
System.out.println("输出的内容为:"+str);
sr.close();
}

进阶使用(练习题)

1.判断输入的是否是整数

public static void main(String[] args) {
Scanner sr = new Scanner(System.in); int i=0;
float f=0.0f;
//判断输入的是否是整数
if (sr.hasNextInt()){
int result = sr.nextInt();
//是否有下一个整数
System.out.println("您输入的整数是:"+result);
}else{
System.out.println("您输入的不是整数!");
}
sr.close();

2.我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。

public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
System.out.println("请输入数据:");
double sum=0;
double ave=0;
int num=0;
while(sr.hasNextDouble()){
System.out.println("输入x时结束运行");
double get = sr.nextDouble();
//获取输入的数据
num=++num;
sum=sum+get;
ave=sum/num;
System.out.println(num+"个数的和为"+sum);
}
System.out.println(num+"个数的和为"+sum);
System.out.println(num+"个数的和为"+ave);
sr.close();
}

Scaner对象的更多相关文章

  1. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  2. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  3. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  4. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  5. JS核心系列:浅谈原型对象和原型链

    在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...

  6. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  7. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  8. ASP.NET内置对象的总结

    1. Response对象可形象的称之为响应对象,用于将数据从服务器发送回浏览器. 实例源码:链接: http://pan.baidu.com/s/1dDCKQ8x 密码: ihq0  2. Requ ...

  9. ADO.NET对象的详解

    1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...

随机推荐

  1. MyBatis配置项--配置环境(environments)--数据源(dataSource)

    数据源(dataSource) dataSource元素使用标准的JDBC数据源接口来配置JDBC连接对象的资源. ·许多MyBatis的应用程序会按示例中的例子来配置数据源.虽然是可选的,但为了使用 ...

  2. iOS自定义tabBar

    在我们的项目中经常会自己自定义tabBar因为苹果自带的真的太丑了!也不满足我们的项目需求. 好 开始行动吧! 先上图看下我们最终实现的效果: 继承UItabBar自定义一个自己的tabBar .h# ...

  3. 图论--2-SAT--详解

    问题描述: 现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0.A[x] OR A[y] OR A[z]=1等,要确定A[0..N-1]的值,使得其满足所有限制关系. ...

  4. codeforce 227D Naughty Stone Piles (贪心+递归+递推)

    Description There are n piles of stones of sizes a1, a2, -, an lying on the table in front of you. D ...

  5. postman(参数化)

    一.参数化 1.新建csv文件 2.csv文件中输入变量名和参数 3.postman中新增接口,并设置变量 4.选择进入runner页面 方法一 方法二 5.导入参数化csv格式文件,点击run It ...

  6. Springboot-WebFlux实现http重定向到https

    1 简介 Spring WebFlux是一个新兴的技术,Spring团队把宝都压在响应式Reactive上了,于是推出了全新的Web实现.本文不讨论响应式编程,而是通过实例讲解Springboot W ...

  7. 「译」Graal JIT编译器是如何工作的

    原文Understanding How Graal Works - a Java JIT Compiler Written in Java,讲了jvmci和ideal graph的基本概念以及一些优化 ...

  8. 重新认识 Spring IOC

    spring IOC 剖析 再品IOC与DI IOC(Inversion of Control) 控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建.依赖的代码,反转给容器来帮忙实现. ...

  9. tp5中使用ueditor编辑器保存文本到数据库后回显后显示html标签问题解决办法

    在编辑器ueditor中获取文本,保存到到数据库后为 当在数据库中提取出来,在显示回ueditor编辑器时候,出了问题, html标签都显示出来了 百度了下别人的解决办法是,使用官方提供的api 可是 ...

  10. Spring Cloud 学习 之 Spring Cloud Eureka(架构)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 Eureka服务治理基础架构的三个核心要素: 服务治理机制: 服务提供者: ...