一:练习
判断一个字符串是否是对称字符串,例如"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感谢每个版主的分享。