(1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”}
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推,并逐个输出 (3)如:010 是对称的,3223 是对称的,123123 不是对称的
(4)最终打印该数组中对称字符串的个数 提示:循环获取字符串的每一个字符,依次比较第一个和最后一个,第二个和倒数第二个。。。
代码实现:
public class StringExcise2 {
public static void main(String[] args) {
String[] s= { "010", "3223", "666", "7890987", "123123" ,"0123563210"};
judge1(s);
judge2(s);
judge3(s);
}
/* 方法一:
* 利用for循环,遍历数组的元素;
* 再利用for循环,依次依次比较第一个和最后一个,第二个和倒数第二个···
*/
public static void judge1(String[] s) {
for (int i = 0; i < s.length ; i++) //循环遍历数组元素
for (int j = 0; j < s[i].length(); j++) { //循环遍历素组元素里的字符
if (s[i].charAt(j) == s[i].charAt(s[i].length()-1 - j)) {
if(j == (s[i].length()-1)/2) { //如果j循环到(s[i].length()-1)/2说明它是对称的
System.out.print(s[i] + "是对称的,");
break;
}
}
else {
System.out.print(s[i] + "不是对称的,");
break;
}
}
}
/* 方法二:
* 建立一个空字符串;利用for循环,遍历数组的元素;
* 再利用for循环,让初始值为空的news等于倒序的数组元素
* 利用for循环和equals()方法,判断是否对称
*/
public static void judge2(String[] s) {
System.out.println();
String news = "";
for(int i=0 ; i<s.length ; i++) {
for(int j=s[i].length()-1 ; j>=0 ; j--) {
news +=s[i].charAt(j); //让初始值为空的news等于倒序的数组元素
}
if(news.equals(s[i]))//判断两个字符串的内容是否相等
System.out.print(s[i] + "是对称的,");
else System.out.print(s[i] + "不是对称的,");
news = "";//判断对称后,让字符串news为空,令数组s的下一个元素s[i]=news
}
}
/* 方法三:
* 利用StringBuilder/StringBuffer和for...each循环,
* 将数组中的元素一 一翻转,
* 再利用equals()方法比较
*/
public static void judge3(String[] s) {
System.out.println();
for(String str : s) {
StringBuilder sb = new StringBuilder(str);
if(sb.reverse().toString().equals(str))//为什么不是sb.reverse().equals(str)呢?
// 因为sb.reverse()返回的是StringBuilder类型,不能和String类型比较
System.out.print(str+ "是对称的,");
else
System.out.print(str + "不是对称的,");
}
}
}
输出结果: