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. Zabbix3.4安装部署

    Zabbix3.4安装部署 一.系统环境 cat /etc/redhat-release  CentOS Linux release 7.3.1611 (Core)  关闭防火墙及selinux sy ...

  2. java中Future的使用

    文章目录 创建Future 从Future获取结果 取消Future 多线程环境中运行 java中Future的使用 Future是java 1.5引入的一个interface,可以方便的用于异步结果 ...

  3. Spring5参考指南: BeanWrapper和PropertyEditor

    文章目录 BeanWrapper PropertyEditor BeanWrapper 通常来说一个Bean包含一个默认的无参构造函数,和属性的get,set方法. org.springframewo ...

  4. office 365 激活

    将以下代码复制到记事本 @echo off title Activate Microsoft Office ALL versions &echo - Microsoft Office Prof ...

  5. 解决从dockerhub上下载debian:jessie失败

    解决从dockerhub上下载debian:jessie失败 笔者使用docker build 构建镜像出现下面的错误 Step 1/12 : FROM debian:jessie Get https ...

  6. mac OS npm 安装/卸载失败 权限问题解决方案

    在终端输入 sudo chown -R $USER /usr/local 输入开机密码

  7. jQuery学习(三)

    事件 on方法可以将一个事件绑定在jQuery对象上,当你的操作触发了这些事件时,便会调用你所绑定的函数. 例如,给某个超链接绑定点击事件. <head> <meta http-eq ...

  8. JavaScript面向对象那些东西-继承

    继承 父类里有些属性方法 子类想把父类中的这些属性方法 继承过来给子类自己的实例也用用 ( ps: →_→ 能不能专业点 没文化真可怕 ) 一.原型链继承 // 原型链继承:把子类的原型作为父类的实例 ...

  9. 谁需要GUI?快看Linux 终端生存之道

    完全在 Linux 终端中生存并不容易,但这绝对是可行的. 处理常见功能的最佳 Linux shell 应用 你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件, ...

  10. Pointers and Memory

    Stanford CS Education Library #102 一.Basic Pointers 指针主要有两个用途:使不同的代码段共享信息.方便链表(树)的处理. 指针示意图: derefer ...