如何在java中创建和使用java的scanner类类

Java中的Scanner类与BufferReader类实用方法 - 简书
Java中的Scanner类与BufferReader类实用方法
java.util.Scanner主要功能是简化文本扫描
1.扫描控制台输入:Scanner类
1.0 Scanner类优化:close()方法
System.out.print("请输入一个单词:");
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
System.out.print("请输入一个单词:");
String str2=scan.nextLine();
··· ···
scan.close();
//释放内存
说明:使用close()方法关闭输入流,释放内存
1.1 获取单数据
当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。
import java.util.S
System.out.print("请输入一个单词:");
String s1=scan.nextLine();
//获取到一行输入
String s2=scan.next();
//获取到一个输入,出现空格、tab或回车就结束
int s3=scan.nextInt();
//获取到一个数字,出现空格、tab或回车就结束
byte s4=scan.nextByte();
//获取到一个字符,出现空格、tab或回车就结束
boolean s5=scan.nextBoolean();
//获取到一个Boolean类,出现空格、tab或回车就结束
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
注意:nextLine() 获取的是输入的一行数据;而next()等获取的是一个数据,若数据中存在空格、tab、或回车,则都为该数据结束
nihao hello world
hello 67 u true
nihao hello world
1.2 获取数组
通常使用nextLine()来获取到输入行为String字符串,然后对字符串进行split处理
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
String[] strnum=str.split(" ");
System.out.println(strnum.length);
for(int i=0;i&strnum.i++){
System.out.println(strnum[i]);
scan.close();
1.3 逐行获取输入数据或文件,然后处理
使用hasNextLine()方法:
while(scan.hasNextLine()){
System.out.println(scan.nextLine());
//补充使用到的方法
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.InputS
import java.util.S
InputStream in =
in = new FileInputStream(new File("文件完整路径"));
} catch (FileNotFoundException e) {
e.printStackTrace();
Scanner a = new Scanner(in);
while(a.hasNextLine()){
System.out.println(a.nextLine());
2. 扫描控制台输入:BufferReader类
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
2.1 逐行扫描文件,并逐行输出:BufferReader类
这里暂时缺失,待补充Scanner类的使用_百度文库&>&Java中Scanner类的用法
Java中Scanner类的用法
上传大小:3KB
java 5.0 加入的scanner类的使用方法,可以简单的输入输出控制,取代原来的输入输出流控制的麻烦事情
综合评分:4(21位用户评分)
所需积分/C币:
下载个数:122
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有11条
跟百度里的一样啊。
和百度文库里的一样啊
一般般吧,虽然少点,而且不全,还行吧
不错,请得详细。
讲的很清楚,但是就是不是很全面。
不错,就是不全
虽然少点,不过挺不错的。
一般,和百度文库里的一样,不过例子是好的,就是可以说的详细点。
scanner的delimiter方法
审核通过送C币
39本架构类书籍
创建者:jsntghf
java程序员必看十五大书籍
创建者:luoqi198828
Java优质资源
创建者:circle__gossoon
上传者其他资源上传者专辑
比尔盖茨的话
用Eclipse开发J2ME手机游戏入门讲座
史上最全word用法
抠图的精典教程
SQL语言艺术
开发技术热门标签
VIP会员动态
找不到资源?发布悬赏任务百万程序猿帮你提供!
下载频道部分积分规则调整公告
开通VIP,海量IT资源任性下载
二十大技术领域优质资源
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
Java中Scanner类的用法
会员到期时间:
剩余下载个数:
剩余C币:0
剩余积分:6726
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站1200个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
Java中Scanner类的用法Java中Scanner类的用法
Java中Scanner类的用法
5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Scanner reader=new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入
12.34,hasNextFloat()的值是true,而hasNextInt()的值是false.
NextLine()等待用户输入一个文
本行并且回车,该方法得到一个String类型的数据。
下面是一个实例:
import java.util.*;
public class Example{
public static void main(String args[]){
System.out.println("请输入若干个数,每输入一个数用回车确认");
System.out.println("最后输入一个非数字结束输入操作");
Scanner reader=new Scanner(System.in);
double sum=0;
while(reader.hasNextDouble()){
double x=reader.nextDouble();
sum=sum+x;
System.out.printf("%d个数的和为%f\n",m,sum);
System.out.printf("%d个数的平均值是%f\n",m,sum/m);
运行结果:
C:\java&java
Example请输入若干个数,每输入一个数用回车确认最后输入一个非数字结束输入操作34.13445d3个数的和为113.1000003个数的平均值是37.700000
C:\java&另一个例子,读取并分析文本文件:hrinfo.txt,文本文件的内容如下:老赵,28,feb-01,true小竹,22,dec-03,false阿波,21,dec-03,false凯子,25,dec-03,true&&
程序: import java.util.S
import java.io.F
import java.io.FileNotFoundE
public class readhuman {
private static void readfile(String filename) {
Scanner scanner = new Scanner(new File(filename));
scanner.useDelimiter(System.getProperty("line.separator"));
while (scanner.hasNext()) {
parseline(scanner.next());
scanner.close();
}catch (FileNotFoundException e) {
System.out.println(e);
private static void parseline(String line) {
Scanner linescanner = new Scanner(line);
linescanner.useDelimiter(",");
//可以修改usedelimiter参数以读取不同分隔符分隔的内容
String name = linescanner.next();
int age = linescanner.nextInt();
String idate = linescanner.next();
boolean iscertified = linescanner.nextBoolean();
System.out.println("姓名:"+name+" ,年龄:"+ age+" ,入司时间:"+ idate+"
,验证标记:"+iscertified );
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("usage: java readhuman file location");
System.exit(0);
readfile(args[0]);
运行结果:C:\java&java
readhuman hrinfo.txt姓名:老赵 ,年龄:28 ,入司时间:feb-01 ,验证标记:true姓名:小竹,年龄:22
,入司时间:dec-03 ,验证标记:false姓名:阿波 ,年龄:21 ,入司时间:dec-03
,验证标记:false姓名:凯子,年龄:25 ,入司时间:dec-03 ,验证标记:true
Scanner类从字面上讲是“扫描”的意思,它把给定的字符串解析成Java的各种基本数据类型primitive&types,用于分解字符串的默认的分隔符是空格,当然也可以定制。&
例如:Scanner&sc&=&new&Scanner(System.in);其构造函数参数是待解析的输入源,可以是File对象、Stream对象,或是一个String,然后还有java.lang.Readable对象。
定制分隔符的方法是sc.&useDelimiter(Pattern),然后while循环和sc.next()来依次取出Scanner解析后的元素,还可以特定取sc.nextInt()/&nextLong()/&nextShort()/&nextDouble()等等。
最后,不管输入源是不是Stream,都请执行sc.close()方法,关闭Scanner,它同时会关闭其输入源(the&source&implements&the&Closeable&interface)。
――――――――――――――
import&java.io.*;
import&java.util.*;
public&class&ScanFar&{
&&&&public&static&void&main(String[]&args)&throws&IOException&{
&&&&&&&&Scanner&sc&=
&&&&&&&&&&&&&&&&new&Scanner(new&BufferedReader(new&FileReader("words.txt")));
&&&&&&//&&sc.useDelimiter("分隔符");&默认是空格
&&&&&&&&while&(sc.hasNext())&{
&&&&&&&&&&&&System.out.println(sc.next());
&&&&&&&&sc.close();
如果words.txt文件中的内容是:“So&she&went&into&the&garden...”
那么结果如下,整个字符串按空格来分为了多个String对象
如果sc.useDelimiter("t"),那么结果按字母t来分解,如下:
So&she&wen
he&&garden...
发现被为分隔符的字母t被消除了,不作为结果的一部分。
以前常常遇到要从字符串中取出某些部分,有了Scanner类,比Split()方便灵活多了。
注:sc.next()是从结果集中连续取值,如果要从一串字符中取出间插在中间的数字,那么使用sc.nextInt(),但是如果结果集中的下一个元素不是int类型的话就会抛出异常,要达到这一目的,在循环中添加if条件判断即可,如下:
While(sc.hasNext()){
if(sc.hasNextInt()){&//&sc.hasNextShort()/hasNextDouble/…等各种基本数据类型
//做事件…
next();//直接跳过
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java scanner用法 的文章

 

随机推荐