Scanner在java中有啥用法怎么用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scanner在java中有啥用法怎么用相关的知识,希望对你有一定的参考价值。
举个例子吧。我是初学者对这些文字没有非常具体的感觉
1、首先在一个java工程下创建一个类名的ScannerDemo的类。
2、然后创建一个Scanner类对象,让它接收从键盘输入的数据。
3、这里利用的nextLine方法接收字符串。next方法其实也是可以获取字符串的。但是next不能获取空格,比如输入Hello World,使用next方法只会得到Hello;而使用nextLine方法会得到完整的Hello World;因为nextLine方法是以回车键为结束标识的。
4、在程序窗口空白处,点击右键,选择Run As ——Java Application。
5、这时在控制台中,输入字符串,按回车。可以看到利用Scanner类的nextLine成功接收到字符串。
6、当然Scanner除能接收字符串之外,像整数,浮点数也是可以接收的,都有对应的方法。下面就以接收整数为例,其他类型的也差不多,可以自己尝试一下。
7、运行查看结果,可以看到nextInt()只能接收整数。想要接收其他类型的数据就得用其他方法了。
扩展资料:
Scanner类常用方法
1、String next():接收控制台输入的字符串(备注:不能将空格作为字符串接收);
2、String nextLine():接收控制台输入的字符串;
3、int nextInt():接收控制台输入的int类型的数据;
4、double nextDouble:接收控制台输入的double 类型的数据;
5、boolean nextBoolean():接收控制台输入的boolean 类型的数据;
6、输入char类型的数据;
Scanner类没有直接输入char类型的方法,可以通过charAt()方法从next()或nexyLine()获取。
参考资料:百度百科-计算机编程语言
参考技术A创建 Scanner 对象的基本语法:Scanner s = new Scanner(System.in);
接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据。
一、使用 next 方法:
1、ScannerDemo.java 文件代码:
import java.util.Scanner;
public class ScannerDemo
public static void main(String[] args)
Scanner scan = new Scanner(System.in); // 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:"); // 判断是否还有输入
if (scan.hasNext())
String str1 = scan.next(); System.out.println("输入的数据为:" + str1);
scan.close();
2、执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemonext方式接收:runoob com输入的数据为:runoob
二、使用 nextLine 方法:
1、ScannerDemo.java 文件代码:
import java.util.Scanner;
public class ScannerDemo
public static void main(String[] args)
Scanner scan = new Scanner(System.in); // 从键盘接收数据
// nextLine方式接收字符串
System.out.println("nextLine方式接收:"); // 判断是否还有输入
if (scan.hasNextLine())
String str2 = scan.nextLine(); System.out.println("输入的数据为:" + str2);
scan.close();
2、执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemonextLine方式接收:runoob com输入的数据为:runoob com
扩展资料:
Scanner:使用该方法的java类文档前需加语句“ import java.util.Scanner; ”。一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。不管以前是否更改,reset() 方法将把扫描器分隔符的值重置为默认空白分隔符。
参考资料:
Scanner-百度百科
用法:
1、Scanner nextInt()只读取数值,剩下"\\n"还没有读取,并将cursor放在本行中。
2、next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
3、nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。
4、在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。
例如:
1、代码如下:
public class NextTest
public static void main(String[] args)
String s1,s2;
Scanner sc=new Scanner(System.in);
System.out.print("请输入第一个字符串:");
s1=sc.next();
sc.nextLine();
System.out.print("请输入第二个字符串:");
s2=sc.nextLine();
System.out.println("输入的字符串是:"+s1+" "+s2);
2、运行结果:
请输入第一个字符串:home
请输入第二个字符串:work
输入的字符串是:home work
扩展资料:
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如:
1、以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
2、以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong())
long aLong = sc.nextLong();
参考资料来源:百度百科—Scanner
参考技术C public final class Scannerextends Object
implements Iterator<String>
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong())
long aLong = sc.nextLong();
扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
输出为:
1
2
red
blue
以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); 参考技术D Scanner input = new Scanner(System.in)
首先,你的.java文件中必须包含
import java.util.Scanner ; 或 import java.util.*;
才能使用这句,因为要用到Scanner
Scanner对象是可以 读取控制台的输入
Scanner input = new Scanner();
这是一般的对象创建方法,你应该懂吧.
加了一个对象System.in参数,表示传递的是键盘的输入,懂了吧? (不懂就去把对象和参数传递看懂来.)
就是说Scanner类的这个input对象可以调用键盘上输入的东西,
比如 String name=input.nextLine();
表示你在命令行输入的下一行字符串 它被存放在name变量里本回答被提问者采纳
ServiceRegistry在创建SessionFactory中有啥用
【中文标题】ServiceRegistry在创建SessionFactory中有啥用【英文标题】:What is the use of ServiceRegistry in creating SessionFactoryServiceRegistry在创建SessionFactory中有什么用 【发布时间】:2014-02-26 12:38:05 【问题描述】:我正在学习 Java 中的 Hibernate。
因为,要创建Session
,我们必须使用SessionFactory.openSession()
,而要创建SessionFactory
,我们使用sessionFactory = config.buildSessionFactory(serviceRegistry);
ServiceRegistry
在hibernate中有什么用??
我创建SessionFactory
的代码:
Configuration config = new Configuration();
config.addAnnotatedClass(user.class);
config.addAnnotatedClass(emp.class);
config.configure();
// Didn't understand the code below
Properties configProperties = config.getProperties();
ServiceRegistryBuilder serviceRegisteryBuilder = new ServiceRegistryBuilder();
ServiceRegistry serviceRegistry = serviceRegisteryBuilder.applySettings(configProperties).buildServiceRegistry();
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
【问题讨论】:
【参考方案1】:ServiceRegistry 最基本的是托管和管理服务。它的契约由 org.hibernate.service.ServiceRegistry 接口定义。 目前 Hibernate 使用 3 种不同的 ServiceRegistry 实现来形成层次结构。
BootstrapServiceRegistry 标准服务注册表 SessionFactoryServiceRegistry org.hibernate.service.spi.SessionFactoryServiceRegistry 是第三个标准的 Hibernate ServiceRegistry。通常,其父注册表是 StandardServiceRegistry。 SessionFactoryServiceRegistry 旨在保存需要访问 SessionFactory 的服务。目前只有 3 个服务。EventListenerRegistry org.hibernate.event.service.spi.EventListenerRegistry 是 SessionFactoryServiceRegistry 中管理的大服务。这是管理和公开所有 Hibernate 事件侦听器的服务。 Integrator 的一个主要用例是更改侦听器注册表。
如果进行自定义侦听器注册,了解 org.hibernate.event.service.spi.DuplicationStrategy 及其对注册的影响非常重要。基本思想是告诉Hibernate:
是什么让监听器重复
如何处理重复注册(错误、先胜、后胜)
StatisticsImplementor
org.hibernate.stat.spi.StatisticsImplementor 是 org.hibernate.stat.Statistics API 的 SPI 部分。收集器部分,如果你愿意的话。
【讨论】:
【参考方案2】:请参考 Hibernate 文档(第 7 章):http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch07.html
服务:服务是为 Hibernate 提供各种功能的可插入实现的类。具体来说,它们是某些服务契约接口的实现
ServiceRegistry :除了服务本身之外,中心服务 API 是 org.hibernate.service.ServiceRegistry 接口。服务注册中心的主要目的是保存、管理和提供对服务的访问。
【讨论】:
【参考方案3】:参考这个: http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch07.html
除了服务本身之外,中心服务 API 是 org.hibernate.service.ServiceRegistry 接口。服务注册中心的主要目的是保存、管理和提供对服务的访问。
服务注册表是分层的。一个注册表中的服务可以依赖和利用同一注册表以及任何父注册表中的服务。
使用 org.hibernate.service.ServiceRegistryBuilder 构建 org.hibernate.service.ServiceRegistry 实例。
【讨论】:
以上是关于Scanner在java中有啥用法怎么用的主要内容,如果未能解决你的问题,请参考以下文章