一:练习

        判断一个字符串是否是对称字符串,例如"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键盘录入(欢迎交流)的更多相关文章

  1. java 键盘录入(Scanner)

    键盘录入(Scanner)• 键盘录入数据概述– 我们目前在写程序的时候, 数据值都是固定的, 但是实际开发中, 数据值肯定是变化的, 所以, 把数据改进为键盘录入, 提高程序的灵活性.• 如何实现键 ...

  2. Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值

    1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: •  创建键盘录入数据对象 •  键盘录入多个数据,我们不知道多少个,所以用集合存储 •  以0结束,这个简单,只要键盘 ...

  3. Java基础学习-三元运算符和键盘录入的基本步骤和使用

    1.三元运算符的执行流程   package com.denniscui_05; /*  * 三元运算符:  *         关系表达式?表达式1:表达式2  *  * 执行流程:  *      ...

  4. Scanner类完成用户键盘录入

    l  Scanner类 Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据. Scanner使用步骤: 导包:import java.util.Scanner; ...

  5. IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中

    需求: 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> C:键盘录入学 ...

  6. Java基础知识强化之IO流笔记62:三种方式实现键盘录入

    1. 三种方式实现键盘录入     System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式:  A:main方法的args接收参数.  java HelloWorld hello w ...

  7. Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例

    1.  键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析:   A:创建学生类   B:创建集合对象      TreeSet<Student>   ...

  8. Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

    1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...

  9. Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台

    1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台: 分析: A: 定义学生类    B: 创建一个TreeSet集合       C: 总分从高到底如何实现 ...

随机推荐

  1. find命令学习

    find命令与locate命令的区别: locate: 非实时查找: 依赖于索引,而索引构建非常占用资源,索引的创建是在系统空闲时系统自动进行,可以用updatedb命令更新索引: 查找速度快: 非精 ...

  2. 什么是FTP服务器

    FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务. FTP的全称是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地 ...

  3. <s:select>下拉框是空白的解决办法

    首先,定义了一个Department的JavaBean对象如下 DAO.java 在一个Action类Employee.java中将depts放入requestMap中 最后,在index.jsp里定 ...

  4. SQL Server 2012 创建操作员

    数据库可以通知操作员,给操作员发送邮件,就要在SQL Server 的代理中启用数据库邮件,前提是先配置出数据库邮件 右键SQL Server代理,选择属性,按下图设置 保存后,右键操作员,选择新建操 ...

  5. 主从Reactor多线程模型

    Reactor 单线程--多线程--主从多线程

  6. [HTML5]原生事件绑定和jquery动态事件绑定的区别

    原生事件绑定: <!-- 标签上绑定的事件是由window对象帮助调用,因此方法内的this其实是window对象 --> <label><input type=&quo ...

  7. Java 大数运算

    import java.util.*; import java.math.*; public class Main{ public static void main(String args[]){ S ...

  8. (转)原始图像数据和PDF中的图像数据

    比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...

  9. linux 安装软件程序

    1.用aptitude管理软件包 查看已安装的/未安装的等软件包 无法通过aptitude看到一个细节是所有跟某个特定软件包关联的所有文件的列表.利用dpkg命令能看到这个列表. dpkg -L pa ...

  10. ORA-00245: control file backup failed; target is likely on a local file system

    ORACLE11G RAC alert报错如下:Errors in file /u01/app/oracle/diag/rdbms/dljyzs/dljyzs1/trace/dljyzs1_ora_8 ...