A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT_china 中级黑马   /  2016-4-2 12:51  /  4598 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天上自习做了一个题,感觉这道题不错,特写出来与给位分享一下思路,给位有更好的思路回复讨论。
题目是这样的:
(1)定义数字字符串数组{"010","3223","666","7890987","123123"}
        (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出
        (3)如:010 是对称的,3223 是对称的,123123 不是对称的

代码:
public class Demo_01 {
        public static void main(String[] args) {
                String[] s = {"010","3223","666","7890987","123123"};
                String s1 = "";
               
                for(int i=0;i<5;i++) {                      //第一层for循环把字符串数组转换成字符串
                         s1 = s[i];
                         char[] c2 =new char[s1.length()];
                        //System.out.println(s1);
                         for(int j=0;j<s1.length();j++) {      // 这层for循环把字符串转换成字符数组
                                char c = s1.charAt(j);
                                c2[j] = c;
                                //System.out.print(c + " ");
                        }
                        for(int k=0;k<c2.length/2;k++) {      // c2.length/2是判断的次数,
                                if(c2[k] == c2[c2.length-1-k]) {
                                        if(k==c2.length/2-1) {
                                                print(c2);
                                                System.out.println("是对称的");
                                        }
                                }else {
                                        print(c2);
                                        System.out.println("不是对称的");
                                        break;
                                }
                        }
                }
        }
        public static void print(char[] arr) {            //遍历字符数组
                for(int i=0;i<arr.length;i++) {
                        System.out.print(arr[i]);
                }
        }

}


做这道题的思路就是首先得把字符串数组成字符串,然后把字符串转换成字符数组用到String的charAt();方法,
在把字符串转换成字符数组char c = s1.charAt(j);在做判断  。





5 个回复

正序浏览
不用转换,直接遍历比较
[Java] 纯文本查看 复制代码
public static void function(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()-j-1)){
					break;
				}
				
				if(j==(s[i].length())/2-1)
					System.out.println(s[i]);
			}
			
		}


回复 使用道具 举报
菊花爆满山 发表于 2016-4-2 13:41
有点麻烦 用字符串缓冲区简单点

谢谢,暂时还没学到,感谢指点
回复 使用道具 举报
谢谢 ,暂时还没学到,不过感谢分享知识
回复 使用道具 举报
有点麻烦 用字符串缓冲区简单点
  1. package com.heima.demo;

  2. public class Demo {

  3.         public static void main(String[] args) {
  4.                 String[] strArr = {"010", "3223", "666", "7890987", "123123"};
  5.                 StringBuilder sb = null;
  6.                 for(String str : strArr) {
  7.                         sb = new StringBuilder(str);
  8.                         if(sb.reverse().toString().equals(str))
  9.                                 System.out.println(str + "是对称的");
  10.                 }
  11.         }
  12. }
复制代码

点评

这个不错,反转跟原来的存在缓冲区中的str相比是否一样,一样则输出对称  发表于 2017-8-27 23:50
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马