中易网

刚学JAVA,哪位大神帮我看下判断字符串是否位回文数的代码哪里错了,谢谢!

答案:6  悬赏:40  
解决时间 2021-02-20 15:18
import java.util.Scanner;
public class Judge{
public static void main(String[] args){

Scanner s=new Scanner(System.in);
String str=s.nextLine();
char[] ch=str.toCharArrany();
Boolean b=true;
int j=ch.length/2;
for(int i=0;i if(ch[i]!=ch[j-i-1]){b=false;}
}
if(b==true)
System.out.println("这是一个回文数");
else
System.out.println("这不是一个回文数");
}
}
最佳答案
你的程序我帮你改完了,你看看吧,改动的地方见注释.
import java.util.Scanner;
public class Judge{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
String str=s.nextLine();
char[] ch=str.toCharArray();//这里str.toCharArrany()改成str.toCharArray()去掉n
Boolean b=true;
int j=ch.length/2;
for(int i=0;i if(ch[i]!=ch[ch.length-i-1]){//这里if(ch[i]!=ch[j-i-1])改成if(ch[i]!=ch[ch.length-i-1])
b=false;
}
}
if(b==true)
System.out.println("这是一个回文数");
else
System.out.println("这不是一个回文数");
}
}
运行结果:
12321
这是一个回文数
全部回答
....str.toCharArray()多了N
看已经有人帮你改了,我就给你的建议,你可以考虑一下StringBuffer的reverse()方法,并通过equals比较能简单些。当时我们老师将回文数就是这么教导我们滴~~ reverse() 将此字符序列用其反转形式取代。
import java.util.Scanner; public class Judge{ public static void main(String[] args){ Scanner s=new Scanner(System.in); String str=s.nextLine(); char[] ch=str.toCharArray(); Boolean b=true; int j=ch.length; for(int i=0;i
  • 4楼网友:最后战士
  • 2021-02-20 03:11
之前帮别人回答过回文的问题。我自己写程序也犯了你这个错误,验证时候才发现原因。 if(ch[i]!=ch[j-i-1]){b=false;}        } 关键就是这一段。你虽然设置了b=fase;但是因为没有停止循环。所以b即使为false也会不停的继续被赋值。直到for语句运行到最后一句的ch[j-1]=ch[0]。前面的赋值其实都会忽略掉了。 帮你改了一下,替换掉for那段试一下 for (int i = 0; i < j; i++) { if (ch[i] != ch[j - i - 1]) { b = false; break; } }你主体文件也有点小问题。main方法顺便也发了         public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.nextLine(); char[] ch = str.toCharArray(); Boolean b = true; for (int i = 0; i < ch.length; i++) { if (ch[i] != ch[ch.length - i - 1]) { b = false; break; } } s.close(); if (b == true) System.out.println("这是一个回文数"); else System.out.println("这不是一个回文数"); } 去掉你的J的原因是。如果length为奇数,声明整型变量j为奇数除以2,明显程序会出错
  • 5楼网友:堕落奶泡
  • 2021-02-20 01:42
之前帮别人回答过回文的问题。我自己写程序也犯了你这个错误,验证时候才发现原因。 if(ch[i]!=ch[j-i-1]){b=false;}        } 关键就是这一段。你虽然设置了b=fase;但是因为没有停止循环。所以b即使为false也会不停的继续被赋值。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯