黑马程序员技术交流社区

标题: 新人做一个基础题遇到的问题,望解惑 [打印本页]

作者: 黄成祚    时间: 2015-7-21 21:02
标题: 新人做一个基础题遇到的问题,望解惑
* 第一题:1、判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串。
* @author Administrator
*
*/

public class Test1 {

        public static void main(String[] args) {
                String str = "aabcdffifdcbaa";//定义一个字符串
                int b = str.length();//字符串串长度
                int c = b / 2;//字符串半长 用于定义for循环中x的取值范围
       
                //for循环遍历前一半的字符与后一半字符的倒序依次比较,若中间出现不相同的字符 则判断该字符串不是对称字符串
               
                for(int x=0;x<c;x++){
                        while(str.charAt(x)!=str.charAt(b-1-x)){
                                System.out.println("该字符串不是对称字符串");
                                return;
                        }
                }
                System.out.println("该字符串是对称字符串");
        }
}

问题1 当不用return时 若定义的字符串是不对称的  运行时为什么一直显示"该字符串不是对称字符串"
2    System.out.println("该字符串是对称字符串");是在循环外面 ,为什么在有return时不显示,老是在想怎么解释这个。
作者: 莱克神    时间: 2015-7-21 21:35
1 当不用return时 若定义的字符串是不对称的  运行时为什么一直显示"该字符串不是对称字符串"
答:说一下我的理解,如果你不写return语句时。每当while中的判断语句为true时,就会运行一次输出语句。当你写入return时,当while中的判断语句为true时就会先运行输出语句,然后再运行return结束语句,函数运行结束。弹栈,在栈内存中消失。也就是说只要运行到return就结束了。
System.out.println("该字符串是对称字符串");是在循环外面 ,为什么在有return时不显示
答:因为当有return时,执行到return函数已经弹栈了,函数不存在了。
不知道说得对不对……:lol
作者: gongyanfa123    时间: 2015-7-21 22:30
过来学习学习。
作者: China_Riven    时间: 2015-7-21 22:45
还有对称字符串 这样的说法的.这题是靠数学 么
作者: 黄成祚    时间: 2015-7-23 10:31
莱克神 发表于 2015-7-21 21:35
1 当不用return时 若定义的字符串是不对称的  运行时为什么一直显示"该字符串不是对称字符串"
答:说一下我 ...

原来这样 啊,return还这个作用 ,学习了!
作者: 章浩    时间: 2015-7-23 10:38
楼主是不清楚return的作用吧。return作用:一般的就是用在有反回值的方法中,用来返回方法指定类型的值,同时结束方法执行;也可以用在返回值为void的方法中,用来终止方法运行;
作者: 郁金香大公爵    时间: 2015-7-23 10:43
[code]public class Test2 {
  public static void main(String[] args){
          String str = "abc";
      cmp(str);
      
  }

public static void cmp(String str) {
        boolean result = true;  //定义默认结果是正确的
        int count = (str.length()-1)/2; //定义个数,如果是奇数除以2,int类型结果还是整数,用于for循环比较的次数;
        System.out.println(count);
    for (int x = 0;x <= count ;x++ ){  //循环遍历
        if(str.charAt(x) != str.charAt(str.length()-1-x)){  //指定索引位置返回的字符值进行比较,如果不相等
              result = false; //结果为不对称
        }
    }
     if(! result){
             System.out.println("该字符串是不对称的");
             
     }
      else{
              System.out.println("该字符串是对称的");
              
      }
  }

}
这是我的代码 你可以看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2