-
2022-03-01 19:23:05
一、介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
二、步骤
1)导入该类的所在包, java.util.* //1.引入/导入 Scanner 类所在的包
2) 创建该类对象 (声明变量) //2.创建Scanner 对象 , new 创建一个对象
3) 调用里面的功能 //3. 接收用户输入了, 使用相关的方法
三、案例演示
import java.util.Scanner;//表示把java.util下的Scanner类导入 public class InPut { //编写一个main方法 public static void main(String[] args) { //Scanner类 表示 简单文本扫描器,在java.util 包 //1.引入/导入 Scanner 类所在的包 //2.创建Scanner 对象 , new 创建一个对象 // myScanner 就是 Scanner 类的对象 Scanner myScanner = new Scanner(System.in); //3. 接收用户输入了, 使用相关的方法 System.out.println("请输入你的姓名:"); String name = myScanner.next(); System.out.println("请输入你的年龄:"); int age = myScanner.nextInt(); System.out.println("请输入你的工资:"); double sal = myScanner.nextDouble(); System.out.println("你的信息如下:"); System.out.println("姓名=" + name + " 年龄=" + age + " 工资=" +sal);
四、使用API文档查找
更多相关内容 -
根据主键查找sql语句Java代码实现
2021-01-06 22:45:03两个文本文件,一个存储商户号(2000条),一个存储商户号的insert语句(10万条并且每条sql语句分成三行),根据商户号找到对应的sql语句 -
Java查询大文本文件的处理方法
2021-04-18 01:00:01Java查询大文本文件的处理方法有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且...Java查询大文本文件的处理方法
有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的并行处理。
使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化文件读写和游标计算函数,书写简单代码就能实现并行计算,并提供了易用的JDBC接口。JAVA应用程序可以将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果。
集算器与Java应用程序的集成结构如下:
下面举例说明集算器协助JAVA查询大文本的基本过程。源数据sOrder.txt如下:
要查询起止时间是startDate、endDate之间,金额大于argAmount的订单,只需使用如下代码:
A1:以游标方式打开文件。@t表示将第1行读为列名。
A2:进行结构化查询,结果为游标。
A3:执行游标,将结果读入内存,如下:
JAVA主程序可以JDBC的方式调用集算器脚本,代码如下:
Class.forName("com.esproc.jdbc.InternalDriver");
con=DriverManager.getConnection("jdbc:esproc:local://");
//调用集算器脚本类似存储过程),其中searchbig是dfx的文件名
st=(com. esproc.jdbc.InternalCStatement)con.prepareCall("call searchbig");
//设置参数
st.setObject(1,"2010-01-01");
st.setObject(2,"2010-12-31");
st.setObject(3,2000);
//执行脚本
st.execute;
//获取结果集
ResultSetrs = st.getResultSet;
……
返回值是符合JDBC标准的ResultSet对象,调用集算器脚本和访问数据库的方法完全一样,熟悉JDBC的程序员可以很快掌握。
对于上面这类较简单的代码,还可以直接将脚本写在JDBC调用中,多行语句之间用\n分隔即可,类似执行一句较复杂的SQL,这样可以不必再保存一个脚本文件。
st = (com.esproc.jdbc.InternalCStatement)con.createStatement;
ResultSet rs1 =st.executeQuery("=file(\"D:\\sOrder.txt\").import@t\n" +"=A1.select(OrderDate>=date(\"2010-01-01\") &&OrderDate<=date(\"2010-12-31\") && Amount>2000)\n"+
"=A2.fetch");
集算器会返回最后一个表达式的值。
如果查询结果内存装不下,可以在集算器中直接返回游标即去掉A3代码),在JAVA中只需设置每批次读取的记录数即可正常读取,具体代码如下:
st.setFetchSize(1000)
关于集算器JDBC的部署和调用的更详细信息可参考集算器集成应用之被JAVA调用。
集算器还可以实现多线程并行计算,最简单方法就是在上述代码的cursor函数中使用@m,这表示多线程读取文件。
也可以手工分段,在读取和计算部分都使用多线程并行计算,代码如下:
A1:用8个游标打开文件,每次读取文件的指定部分。~表示循环变量,依次是1、2…8,@z表示将文件按字节数大致分为几部分,只读取其中一部分,集算器会自动去头补尾,以保证取出的数据是整行。
A2:针对每个游标执行查询。
A3:并行执行游标,并合并结果。@x表示合并的对象是游标,@m表示并行计算。需要注意的是,函数conj无法保证结果顺序和源数据一致。
上述代码使用了集算器内置的并行计算函数,如果计算过程较复杂,或内存可以装下计算结果,则适合用显式并行计算语句。代码如下:
A1:设定并行数。
A2:并行执行代码,作用范围是缩进的B2-B3。to(A1)=[1,2…8]表示每个线程的入口参数。线程内部可用A2来获取入口参数,线程外部可用A2获取所有线程的计算结果。
B3:查询游标,将结果读入内存,并返回给主线程。
A4:按顺序合并各线程的计算结果。
对于有序数据,可以用二分法来提高查询性能。比如数据已按Client和OrderID排序,现在要根据参数argClient和argOrder找出相应的记录,可以使用下面的代码:
begin,end是二分法的起止位置,m是中间位置。
B4:按字节数定位到中间位置,打开游标读入一条记录,集算器会自动实现去头补尾,取出完整记录。@x表示取出记录后立即关闭游标。
B5-C6:如果定位成功,则将当前记录存储在C5。
B7-C8:如果定位不成功,则继续比较集合大小并重新设置begin,end。
A9:将C5中的计算结果显式地返回给JDBC。
相关文章暂无相关文章
-
编程必备,程序员应该都知道的7款文本编辑器
2021-03-16 12:42:00正如一个作家需要一个文字处理器来写故事,一个艺术家需要画布来创作,同样的,如果想编程,你会需要一个地方来写代码。程序员在哪里编写代码?最常见的就是使用文本编辑器了吧。下文列出了7个主流的文本编辑器,...正如一个作家需要一个文字处理器来写故事,一个艺术家需要画布来创作,同样的,如果想编程,你会需要一个地方来写代码。
程序员在哪里编写代码?最常见的就是使用文本编辑器了吧。
下文列出了7个主流的文本编辑器,不出意外的话,开发人员应该都有所了解,至少听说过。欢迎大家在文章底部留言评论,分享自己的使用习惯和对这些编辑器的看法!
Sublime Text 是许多开发人员日常使用的经典文本编辑器,可用于包括 Windows、Mac、Linux 等多个平台。不过虽然可以不购买许可证免费使用,但不时会有弹窗消息提示,有点烦人。想去除弹窗的,还是去付费购买吧。
Sublime 的特色功能:
良好的扩展功能(包管理器)
允许添加第三方库
速度快,发布快
多平台支持
简洁的 UI
强大的功能集
TextMate 是 Mac下的著名文本编辑器,曾经是 Ruby on Rails 开发人员默认使用的,原因就在于他们主要都在使用 Mac OS 系统。可惜的是,由于只适用于 Mac 系统,有点限制了它的使用性。
TextMate 具有丰富的功能集、外部库和一些一出现就被其他编辑器复制的创新功能。个人认为其中最引人注目的当属“模糊查找功能”,允许快速定位文件,无需通过 Command + T 来搜寻完整的文件目录。
Atom 是一个相对较新的跨平台文本编辑器,于2014年2月在 Github 上推出,使用 Electron 框架基于 web 技术开发而成。
由于加载项可以使用 Web 技术构建,很多人都把自定义插件添加到 Atom.io 文本编辑器上。这也实属正常,毕竟是在 Github 上写的,本身就具有很强的 Git 整合性。
Atom 在最后提交之前的所有更改都会以不同的颜色显示在导航窗格中。如下图左侧橙色部分显示:
Atom 还有基本上你可以想象的任何东西的插件,它确实很优秀,但由于基于 web 技术开发的原因,它通常需要几秒钟来启动。如果你的电脑本身就已经有点卡顿的话,可能需要的时间更长。
如果你看到那些知道自己真正要做什么的人使用 Vim 的话,你会感受到它的速度有多可怕。Vim 是一个命令行文本编辑器,意味着你可以不使用鼠标与它交互。
Vim 带有多种编辑模式,这和其他文本编辑器有明显的不同。同时它也是一个学习起来非常有挑战性的文本编辑器,但一旦学会了,就能让编程更快。
如果是刚刚开始学习编程的,其实不太建议使用 Vim。专业编程几年后,再来考虑拿起 Vim 提高生产力。
Emacs 类似于 Vim,也是一个跨平台命令行文本编辑器。它虽然没有 wim 那种多模式,但使用仍然需要一个相对较高的技能水平,因为学习曲线比较高。
Emacs 有祥全的内置文档,支持几乎所有的 Unicode,高度可定制。
Notepad ++ 是一个 Windows 下的文本编辑器,旨在成为大多数 Windows 用户熟悉的记事本的专业化版本。
Notepad ++ 内置多种语法高亮显示,支持自定义语言; 可自动检测文件类型,根据关键字显示节点。同时,还提供数个特色功能,如邻行互换位置、宏功能等等。
Visual Studio Code 是一个运行于 OS X、Windows 和 Linux 之上的,针对于编写现代 web 和云应用的跨平台编辑器,于 2015年由微软发布。
Visual Studio Code 也集成了所有现代编辑器所应该具备的特性,包括语法高亮、可定制的热键绑定、括号匹配、代码片段收集等等,最近还增加了 Markdown 同步预览功能。
-
Java 中如何使用 SQL 查询文本
2021-03-11 16:41:45使用 SQL 查询语言,你只能查询位于数据库里面的数据,但是当你面对的数据是一些 Excel 表格或者 Txt 文本格式时,有什么办法能直接对着文件进行 Select 查询呢?Ø 引言作为一名数据库开发程序员,使用 SQL 语言...使用 SQL 查询语言,你只能查询位于数据库里面的数据,但是当你面对的数据是一些 Excel 表格或者 Txt 文本格式时,有什么办法能直接对着文件进行 Select 查询呢?
Ø 引言
作为一名数据库开发程序员,使用 SQL 语言查询数据是再普通不过的一件事。而 SQL 语言是基于数据库的查询语言,这就要求被查询的数据只能位于数据库中。但在实际工作中,时常会碰到一些不是来源于数据库的数据,特别是很多来自一些 Excel 表格或者 TXT 文本文件。如果要对它们进行 SQL 查询,通常做法是在数据库中创建临时表,然后导入数据后再使用 SQL 对其查询。这种做法本身未尝不可,但是有几点不妥:
首先,比较麻烦,数据的来源五花八门,格式不同,表结构也各不相同。导入操作往往只能由数据库管理员手动维护,其面临的复杂度可想而知。
其次,数据库常常会涉及敏感数据或安全考虑,就算你不怕麻烦,愿意去维护,也未必有权限进行这类操作。
最后,这些数据往往可能是临时的、突发的,根本不适合往数据库里添加,否则会搞得数据库越来越臃肿,最终导致整体访问性能低下。
有了这些不妥,程序员一般也就不得不放弃 SQL 式查询了,只能通过程序实现一些简单的关键字搜索等功能,毕竟自己去实现 SQL 语法的查询不仅难度大而且完全没必要。
但是 SQL 查询有时候真的很好用啊……那么,有没有一种第三方软件能实现 SQL 式查询文本,让程序员在享受便利的同时,不需要考虑上面这些烦心的问题呢?
答案自然是有,那就是本文要介绍的——集算器。
Ø 开始
下面就来介绍一下,如何在 Java 中利用集算器实现 SQL 式查询文本文件。当然,此处的文本文件不是指完全自由的文本文件,而是有格式规定的,类似于数据表的文件。
从官网下载并安装好集算器,将 dm.jar 及其依赖的配置文件 raqsoftConfig.xml 加入到当前程序的类路径。然后使用集算器提供的 JDBC 类,便可将文本文件当成数据库中的数据表来进行 SQL 式查询了。
示例用到两个文件,第一个 student.txt 数据内容如下:
数据格式为:第一行为字段名,后续行是数据,各列之间用 Tab 键分开。这个表是各个班级的学生基本情况。
第二个 score.txt 数据内容如下:
这个文件通过‘班级’,‘学生 ID’两个关键字段,记录每个学生的各科成绩。
Ø JDBC 示例
对于熟悉 JDBC 的同学来说,Java 调用集算器使用 SQL 查询文本的过程很简单,下面贴出示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLDemo {
public static void main(String[] args) {
Connection con = null;// 连接
Statement stmt = null;// 执行语句
ResultSet rst = null;// 结果集
try {
/********* 通过 JDBC 连接到 集算器 *********/
Class.forName(“com.esproc.jdbc.InternalDriver”);
con = DriverManager.getConnection(“jdbc:esproc:local://”);
/******************* 执行语句方法 ********************/
stmt = con.createStatement();
rst = stmt.executeQuery(“SELECT * FROM score.txt”);
/******************* 执行语句方法结束 ****************/
ResultSetMetaData meta = rst.getMetaData();
for (int i = 0; i < meta.getColumnCount(); i++) {
System.out.print(meta.getColumnName(i + 1) + “\t”);
}
System.out.println();
// 输出结果
while (rst.next()) {
for (int i = 0; i < meta.getColumnCount(); i++) {
System.out.print(rst.getObject(i + 1) + “\t”);
}
System.out.println();
}
stmt.close();
con.close();
} catch (ClassNotFoundException cnf) {
System.out.println(“没找到驱动程序”);
cnf.printStackTrace();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
示例中可以看到加粗的 SQL 语句跟普通 SQL 语法基本一致,仅仅是表名不一样,这里直接写 TXT 文件名。执行后结果如下:
可以看到,使用集算器的 JDBC,完全可以将具有表结构的文本文件直接当成数据表来查询。而集算器除了支持 TXT 格式之外,还支持 CSV、XLS、XLSX 甚至 JSON。另外,集算器自身也有两种数据存储格式:BTX 和 CTX,也是可以直接查询的。
好,进一步的问题来了,集算器对 SQL 的各种命令能够支持到何种程度呢?
首先需要说明的是,集算器不是一个数据库产品,所以对 SQL 中一些数据库维护命令是不支持的,比如 Create、Delete 等。
那么对于 Select 可以支持到什么程度呢?
Ø 分组统计
下面来看看 SQL 查询中最普遍的查询,将 student.txt 跟 score.txt 关联起来,并分组统计出每名学生的总成绩。将上面示例代码中加粗的 SQL 语句替换为如下语句:
SELECT A. 班级,A. 姓名,sum(B. 成绩) 总分 FROM student.txt A JOIN score.txt B ON A. 班级 =B. 班级 AND A. 学生 ID=B. 学生 ID GROUP BY A. 班级,A. 姓名
执行后,得到每班学生的总分表:
可以看到,集算器用 SQL 查询文本时,对于常规的分组、表的联合都没问题。那么带参数的查询,又该如何写呢?
Ø 使用参数
只需将执行语句方法块里的代码替换为以下代码:
/******************* 执行语句方法 ********************/
CallableStatement cs = null; // 定义 CallableStatement 对象 String
String sql = “SELECT 姓名, 性别 FROM student.txt WHERE 班级 =?”;
cs = con.prepareCall(sql);
cs.setString(1, “一班”);
rst = cs.executeQuery();
/******************* 执行语句方法结束 ****************/
换完后,注意要引入 CallableStatement 类。执行后结果如下:
带参数的句子仍然没问题,调用方法也跟数据库标准是一致的。不过上述结果中,性别显示为数字,集算器 SQL 能不能支持转换语法呢?
Ø CASE 语句
将上面的 SQL 语句替换成带 CASE 的 SQL 语句:
SELECT 姓名,CASE 性别 WHEN 0 THEN ‘男’ ELSE ‘女’ END 性别 FROM student.txt WHERE 班级 =?
结果如下:
通过上面这几个例子可以看到,集算器对常用查询的支持还是比较全面的。鉴于篇幅原因,这里就不继续一一列举了。更多集算器查询文件时的详细语法以及函数,请参考文档:http://doc.raqsoft.com.cn/esproc/func/dbquerysql.html#db_sql_
-
[原创]java获取word里面的文本
2021-03-10 00:46:50需求场景开发的web办公系统...方案分析方案一:使用Apache POI技术将所有服务器上文档的文本获取后存储到数据库,查找文档时利用sql语句检索数据中存储的文档文本是否包含关键字来搜索到相关文档。然而现在 micros... -
Java 实现HTML富文本导出至word完美解决方案
2021-02-06 21:28:27标签:一、 问题的提出最近用java开发一个科技项目信息管理系统,里面有一个根据项目申请书的模板填写项目申报信息的功能,有一个科技项目申请书word导出功能。已有的实现方式:采用标准的jsp模板输出实现,简单地说... -
java 查找字符串所在的位置代码
2021-02-12 13:20:34使用了 String 类的 indexOf() 方法在字符串中查找子字符串出现的位置,如过存在返回字符串出现的位置(第一位为0),如果不存在返回 -1。方便判断和截取字符串!语法:stringObject.indexOf(searchvalue,fromindex)... -
java获取word里面的文本
2021-04-24 16:20:47需求场景开发的web办公系统...方案分析方案一:使用Apache POI技术将所有服务器上文档的文本获取后存储到数据库,查找文档时利用sql语句检索数据中存储的文档文本是否包含关键字来搜索到相关文档。然而现在 micros... -
Java正则表达式提取标签之间的文本
2021-03-13 09:25:55您走在正确的轨道上。现在,您只需要提取所需的组,如下所示: final Pattern pattern = Pattern.compile("(.+?)", Pattern.DOTALL);...我将使用XPath查找感兴趣的元素。有关更多信息,请参见Java XPath API。 -
ElasticSearch 常用的查询语句
2021-03-13 15:21:05使用ES时候发现了一篇挺好的文章,收集下来分享给大家。Filter DSLterm 过滤term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型):{ "term": { "age": 26 }}{ ... -
01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)
2021-03-16 15:43:531. Java语言主要由5中符号组成标识符:数字、字母、美元符、下划线(注意不能数字开头)关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写):goto和const保留了它们,但是Java没有使用。main不是关键字,但是被... -
Java中快捷键
2021-02-12 18:09:14Fond表示字体 size表示字号IDEA的基本配置IDEA中常用的快捷键Intellij IDEA基本快捷键Ctrl+G 跳转到指定行 Ctrl+F4 关闭当前编辑页面Ctrl+F 搜索Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+... -
【Java】Jsoup使用选择器语法来查找元素
2018-11-29 18:22:48你想使用类似于CSS或jQuery的语法来查找和操作元素。 方法 可以使用方法实现:Element.select(String selector) File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "... -
ES常用的DSL语句及对应的Java代码介绍
2020-12-07 09:54:24ES常用的DSL语句对应的Java代码介绍分组过滤term 过滤terms 过滤范围过滤range 过滤非空过滤exists 和 missing 过滤文本过滤多字段过滤bool查询通配符过滤regexp 查询prefix 查询短语匹配(Phrase Matching)总结 ... -
java实训报告文本编辑器的设计与实现.pdf
2021-03-17 13:34:35java实训报告文本编辑器的设计与实现.pdf还剩7页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧,价低环保!内容要点:java实训报告文本编辑器的设计与实现西安心海建站... -
java 查找目录下文件内容包含某个字符串的文件
2019-07-23 13:56:43这个java类主要是用来查找文件内容的,而不是查找文件名的。主要作用是查找目录下所有文件的文件内容包含特定字符串的文件,并打印输出位置和找到的字符数量。可以定义多个字符进行查找,不需要担心文件格式问题,... -
java 读取文本文件,获取某字符串出现的次数
2020-04-14 11:22:08java 代码 /** * 读取文本文件(path),获取某字符串(str)出现的次数 * @param path 指定一个文件路径(不能为空) * @param str 目标字符串 * @return 出现次数 */ private static int getStrCount(String ... -
JAVA字符串操作类CTool.java字符转换类
2021-03-16 06:25:14比如字符串的查找替换操作、将字符串中的特殊字符转换成Web页中可以安全显示的字符串,转换字符串,从UTF-8到GBK的编码转换,从“GBK”到“ISO8859_1”的字符串转换,大文本块处理(将字符集转成ISO),String型变量... -
在某个文件中搜索指定的字符串的java方法 | 学步园
2021-03-06 07:05:15import java.io.*;import java.nio.*;import java.nio.channels.*;import java.nio.charset.*;public class Search {public static void main(String[] args) throws IOException {if(args.length < 2){System.... -
使用java根据要查找txt文件的内容,在查找到值之后再末尾添加自己的内容
2019-01-22 17:39:33使用java根据要查找txt文件的内容,在查找到值之后再末尾添加自己的内容main方法读取文本并修改内容返回修改后的list清空文件内容 main方法 public static void main(String[] args) throws IOException { String ... -
java的基础标签
2021-02-27 16:22:301.文本格式控制标签文本内容 字体加粗 字体倾斜 强调,语气加强用 字体加下划线字体加粗字体居中或换行  空格2.内容容器标签......... 标题(自动换行)自己有加粗的作用段落 段落标签(自动换行) 层标签,默认... -
Java---输入输出、异常处理、文件读写
2021-12-23 00:37:18文章目录异常处理捕获异常:try、catch 和 finally语句一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 异常处理 异常又称为例外,是特殊的运行错误对象。Java通过面向对象的方法来处理程序错误,为可能... -
(私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)
2019-06-13 10:38:46java手册 Java 入门教程 含有1个附件,如下: java-HelloWorld.gif Java 简介 Java 开发环境配置 Java 开发环境配置2 Java 基础语法 含有1个附件,如下: java-HelloWorld.g... -
[转载]java获取word里面的文本
2021-02-13 02:15:21需求场景开发的web办公系统...方案分析方案一:使用Apache POI技术将所有服务器上文档的文本获取后存储到数据库,查找文档时利用sql语句检索数据中存储的文档文本是否包含关键字来搜索到相关文档。然而现在 micros...