黑马程序员技术交流社区

标题: 判断一个字符串是否是对称字符串,代码有何问题? [打印本页]

作者: xiaobo    时间: 2014-5-30 10:09
标题: 判断一个字符串是否是对称字符串,代码有何问题?
  1. import java.util.Scanner;

  2. public class Test2 {
  3. public static void main(String[] args) {
  4.                
  5.                 Scanner sc     = new  Scanner(System.in);
  6.       
  7.                 System.out.println("请输入一个字符串");
  8.       
  9.                 String st= sc.next();
  10.       
  11.                 int l =st.length();
  12.       
  13.                 int i;
  14.          
  15.         boolean equally = true;
  16.       
  17.         for (i=0;i<=l/2 ;i++ ) {
  18.             
  19.                 if(st.charAt(i) != (st.charAt(l-i-1))){
  20.                
  21.                         equally=false;
  22.                
  23.                         break;
  24.             }
  25.       
  26.         }
  27.       
  28.         System.out.println(equally);
  29.       
  30.         }

  31. }
复制代码



作者: 张百振    时间: 2014-5-30 10:29
  1. package Chp13;

  2. import java.util.Scanner;

  3. public class Test2 {
  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请输入一个字符串");
  7.                 String st = sc.nextLine();
  8.                 int l = st.length();
  9.                 int i;
  10.                 boolean equally = true;
  11.                 for (i = 0; i <= l / 2; i++) {
  12.                         if (st.charAt(i) != (st.charAt(l - i - 1))) {
  13.                                 equally = false;
  14.                                 break;
  15.                         }
  16.                 }
  17.                 System.out.println(equally);
  18.         }
  19. }
复制代码
试了一下,貌似没有问题啊?


作者: Hi天天向上    时间: 2014-5-30 11:01
没问题吧
作者: TS__likewise    时间: 2014-5-30 11:07
for循环哪里应该是<而不是<=吧
作者: 黎志勇    时间: 2014-5-30 11:18
for循环里面的判断条件应该是 i<l/2 而不是 i<=l/2,
如果太抽象,搞不懂的话,拿不住用什么哪个的时候,可以自己拿对奇偶数来试试,
比如i是5的话,各个下标是 0,1,2,3,4 ; 5/2 就是 2,所以测试0和1就可以了,
6的话,下标是0,1,2,3,4,5;6/2是3,测到2就行,
所以用 i<l/2 。
作者: superob123    时间: 2014-5-30 11:18
代码可以的,但是可以在这里加一下。
  1.                 String st= sc.next();
复制代码

改成String st=sc.next().trim();把前后的空格都去掉。
这样会好一点





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