java之Scanner详解 - basycai的博客 - 博客
关闭
basycai的博客
目录视图 摘要视图 订阅
var username = "basycia"; var _blogger = username; var blog_address = "http://blog.csdn.net/basycia"; var static_host = "http://static.blog.csdn.net"; var currentUserName = "yingfengfeixiang";
<div id="body">
<div id="main">
<div class="main">
<div class="ad_class">
评论送书 | 云原生、Docker、Web算法
为什么我们创业失败了和选择创业公司的思考
福利 | 免费参加 2017 OpenStack Days China
window.quickReplyflag = true; var isBole = false; var fasrc="http://my.csdn.net/my/favorite/miniadd?t=java之Scanner详解&u=http://blog.csdn.net/basycia/article/details/51112278"
java之Scanner详解
<div class="article_manage clearfix">
<div class="article_l">
<span class="link_categories">
标签:
<a href='http://www.csdn.net/tag/java' target=_blank onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">java</a>
</span>
</div>
<div class="article_r">
<span class="link_postdate">2016-04-10 13:03</span>
<span class="link_view" title="阅读次数">3291人阅读</span>
<span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(0)</span>
<span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('java之Scanner详解','51112278');return false;" title="收藏">收藏</a></span>
<span class="link_report"> <a href="#report" onclick="javascript:report(51112278,2);return false;" title="举报">举报</a></span>
</div>
</div> <style type="text/css">
.embody{
padding:10px 10px 10px;
margin:0 -20px;
border-bottom:solid 1px #ededed;
}
.embody_b{
margin:0 ;
padding:10px 0;
}
.embody .embody_t,.embody .embody_c{
display: inline-block;
margin-right:10px;
}
.embody_t{
font-size: 12px;
color:#999;
}
.embody_c{
font-size: 12px;
}
.embody_c img,.embody_c em{
display: inline-block;
vertical-align: middle;
}
.embody_c img{
width:30px;
height:30px;
}
.embody_c em{
margin: 0 20px 0 10px;
color:#333;
font-style: normal;
}
</style>
<script type="text/javascript">
$(function () {
try
{
var lib = eval("("+$("#lib").attr("value")+")");
var html = "";
if (lib.err == 0) {
$.each(lib.data, function (i) {
var obj = lib.data[i];
//html += '<img src="' + obj.logo + '"/>' + obj.name + " ";
html += ' <a href="' + obj.url + '" target="_blank">';
html += ' <img src="' + obj.logo + '">';
html += ' <em><b>' + obj.name + '</b></em>';
html += ' </a>';
});
if (html != "") {
setTimeout(function () {
$("#lib").html(html);
$("#embody").show();
}, 100);
}
}
} catch (err)
{ }
});
</script>
<div class="category clearfix">
<div class="category_l">
<img src="http://static.blog.csdn.net/images/category_icon.jpg">
<span>分类:</span>
</div>
<div class="category_r">
<label onclick="GetCategoryArticles('6070008','basycia','top','51112278');">
<span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">【java】<em>(53)</em></span>
<img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">
<img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">
<div class="subItem">
<div class="subItem_t"><a href="http://blog.csdn.net/basycia/article/category/6070008" target="_blank">作者同类文章</a><i class="J_close">X</i></div>
<ul class="subItem_l" id="top_6070008">
</ul>
</div>
</label>
</div>
</div>
<div class="bog_copyright">
<p class="copyright_p" >版权声明:欢迎交流!</p>
</div>
刷题过程中遇到数据的读入扫描,发现网上资料比较杂,总结下。
1.包:
import java.util.Scanner
2.使用方法:
Scanner reader=new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort()
注:上面由next()方法转化而来,空格,TAB快结束
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.
例如,拥护在键盘输入
12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文
本行并且回车,该方法得到一个String类型的数据。相比nextLine()回车确认,按照行读为string
3.实例
//逐行扫描文件,并逐行输出
public static void main(String[] args) throws FileNotFoundException {
InputStream in = new FileInputStream(new File("C:\\AutoSubmit.java"));
Scanner s = new Scanner(in);
while(s.hasNextLine()){
System.out.println(s.nextLine());
}
}
//all out
import java.util.Scanner;
public class testNextline {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入字符串:");
while (true) {
String line = s.nextLine();
if (line.equals("exit")) break;
System.out.println(">>>" + line);
}
}
}
//next(), <span style="font-size:18px;">nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort() //用法类似</span>
import java.util.Scanner;
public class hasNextInt {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个整数");
while(in.hasNextInt()){
int num = in.nextInt();
System.out.println("数字"+num);//输入123 12只能读到123
System.out.println("请输入一个字符串");
String str = in.next();//输入 adc cv只能读到adc
System.out.println("字符串"+str);
}
}
}
4.其他相关方法
下面这几个相对实用:
delimiter() 返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner("123 asda bf 12 123 nh l,sf.fl ...adafafa lda");
// s.useDelimiter(" |,|\\.");
while (s.hasNext()) {
System.out.println(s.next());
}
}
123
asda
bf
12
123
nh
l,sf.fl
...adafafa
lda
hasNext() 判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡) hasNextLine() 如果在此扫描器的输入中存在另一行,则返回 true。 next() 查找并返回来自此扫描器的下一个完整标记(String)。 nextLine() 此扫描器执行当前行,并返回跳过的输入信息。
5. 一个读写实例
import java.util.Scanner;
public class test{
public static int getCount(String str,char c){
int count = 0;
if(str != null && str.length() > 0){
for(int i = 0;i < str.length();i++){
if(c == str.charAt(i)){
count++;
}
}
}else{
count = 0;
}
return count;
}
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String str = s.next();
char c = s.next().charAt(0);
int i = getCount(str,c);
System.out.println(i);
}
}