Scanner键盘录入(欢迎交流)
一:练习
判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串;
二: 过程
1.希望通过Scanner对象,键盘录入的形式,提供要判断的字符串;
2.参考的方法:原先对Scanner对象的nextInt()方法使用比较多,现在知道要获取的是字符串,所以查询到其实:nextXxx()方法,其中大部分的Xxx 表示的是代表基本数据类型的字符串,如果要获取字符串什么也不加,直接使用next()方法即可;
3.为了确保输入要判断的是字符串,避免是一些非法字符或数字,这里使用了Pattern正则表达式中的Boolean matches(string regex,CharSequence input),其方法:编译给定的正则表达式,尝试与给定的输入与其匹配。
自己要扩展学习的方法:
String next(String pattern) 如果下一个输入的内容(字符串),和指定的字符串构造的模式“pattern”匹配,则返回下一个字符串
String next(Pattern pattern)同理,内容中和指定的模式匹配,则返回匹配的下一个字符串
boolean hasNextXxx():是否还有下一个输入项,其中的Xxx也可以表示基本数据类型:Boolean,Byte,Short等,
(1) hasNextLine()即查找,输入中是否存在另一行;
(2)hasNext()查看输入中是否还有另外的String字符串;<接口Iterator<String>>
(3)hasNext(String pattern)查看输入中是否还包含和指定字符串构造的模式一致的,如有,则返回true ;
(4)hasNext(Pattern pattern)查看输入中,是否包含和指定模式一致的,如有,则返回true ;
三:代码演示:
import java.util.Scanner;
import java.util.regex.Pattern;
public class ScannerTest {
/*
*使用Scanner对象接收,键盘录入的字符串(使用循环录入的形式);
*目的:写代码判断录入的字符串是不是对称字符串;
* 如:"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串;
* 需注意:录入的字符串是不是包括数字,或其他字符;
*
*/
private static String flag="No";//定义一个标识符,用来控制是否还有还要循环
public static void main(String []args){
String s=null;
while(flag=="No"){
System.out.println("请您输入要比较的字符串(结束该程序:输入:No):");
Scanner input=new Scanner(System.in);
s=input.next();
if(s.equals("No")){
break;
}
if(ComTo(s)){
System.out.println("您录入的字符串"+s+"是对称的字符串");
}
else{
if(flag=="Yes"){flag="No";continue;}
System.out.println("您录入的字符串"+s+"不是对称的字符串");
}
}
}
public static Boolean ComTo(String s){
char[]ch=s.toCharArray();
for(int i=0,j=s.length()-1;i<j;i++,j--){
//考虑如何在此处避免让字符串中包括非法数字和字符;此处查看API1.6版本中有:[a-zA-Z]
if((Pattern.matches("[0-9]*", s))||(!Pattern.matches("[a-zA-Z]*",s)))
{ System.out.println("输入的字符串格式不正确");
flag="Yes";
return false;
}
//防止只输入了一个字符,或是直接判断字符串循环的首字母和尾字母是否相等
else if((ch[i])!=(ch[j])||(s.length()==1)){
return false;
}
else
continue;
}
return true;
}
}
四:总结:
希望看代码的人有什么简单的方法或上述代码有什么问题可以回帖写出,促我学习进步,本帖参考过:
http://blog.163.com/quanquan127@126/blog/static/68847725201252995854785/
http://bbs.csdn.net/topics/40138437感谢每个版主的分享。
Scanner键盘录入(欢迎交流)的更多相关文章
- java 键盘录入(Scanner)
键盘录入(Scanner)• 键盘录入数据概述– 我们目前在写程序的时候, 数据值都是固定的, 但是实际开发中, 数据值肯定是变化的, 所以, 把数据改进为键盘录入, 提高程序的灵活性.• 如何实现键 ...
- Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值
1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: • 创建键盘录入数据对象 • 键盘录入多个数据,我们不知道多少个,所以用集合存储 • 以0结束,这个简单,只要键盘 ...
- Java基础学习-三元运算符和键盘录入的基本步骤和使用
1.三元运算符的执行流程 package com.denniscui_05; /* * 三元运算符: * 关系表达式?表达式1:表达式2 * * 执行流程: * ...
- Scanner类完成用户键盘录入
l Scanner类 Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据. Scanner使用步骤: 导包:import java.util.Scanner; ...
- IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中
需求: 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> C:键盘录入学 ...
- Java基础知识强化之IO流笔记62:三种方式实现键盘录入
1. 三种方式实现键盘录入 System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式: A:main方法的args接收参数. java HelloWorld hello w ...
- Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例
1. 键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> ...
- Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...
- Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台
1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台: 分析: A: 定义学生类 B: 创建一个TreeSet集合 C: 总分从高到底如何实现 ...
随机推荐
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
- jQuery 获取父窗口的元素 父窗口 子窗口(iframe)
$("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementById ...
- (转) 一张图解AlphaGo原理及弱点
一张图解AlphaGo原理及弱点 2016-03-23 郑宇,张钧波 CKDD 作者简介: 郑宇,博士, Editor-in-Chief of ACM Transactions on Intellig ...
- 如何在IIS 7.5中部署Asp.Net MVC 5的网站
0 Sign in to vote 系统是 windwos 2008 已经安装.Net 4.0 和 .Net 4.5 已经安装MVC4 的需要文件,MVC5 找不见下载地方,求各位大哥告知一下在哪里可 ...
- angularjs如何在视图渲染结束之后,或者render之后执行指令中的link方法呢?
angularjs如何在视图渲染结束之后,或者render之后执行指令中的link方法 关键字: $timeout app.directive("myDirective",func ...
- READONLY、、cursor、、VARYING
针对 Transact-SQL 过程的准则:所有 Transact-SQL 数据类型都可以用作参数.您可以使用用户定义的表类型创建表值参数.表值参数只能是 INPUT 参数,并且这些参数必须带有 RE ...
- (转)MyEclipse自动生成Hibernate实体类, oracle篇
转自http://blog.csdn.net/hejinwei_1987/article/details/9465529 1.打开 windows -> Open Perspective -&g ...
- LoadRunner 多场景批处理
@echo off echo *********************************echo ****多场景测试*************echo ******************** ...
- EXT学习之——EXT下拉框默认绑定第一个值
//默认第一个下拉框绑定值if (this.moduleCombo.store.getAt(0) != undefined) { this.moduleCombo.setValue(this.modu ...
- 0601 Spring2.0 发布会及产品发展方向
ProductBacklog:继续向下细化; 1.界面美化,统一界面风格,以简洁美观为主: 2.丰富版面的内容,吸引用户: 3.尝试增加新的版面: Sprint 计划会议:确定此次冲刺要完成的目标 1 ...