扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
public static boolean check(int k){
创新互联公司专注于湾里企业网站建设,自适应网站建设,成都做商城网站。湾里网站建设公司,为湾里等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
String str = ""+k;
int strLen = str.length();
int point = strLen;
int oldLen = 0,newLen = 0;
char first = 'a',end = 'a';
oldLen = (strLen+1)/2;
if (str == "")
{
System.out.println("数值为空");
return false;
}
if(str.length() !=4){
System.out.println("不是四位数");
return false;
}
for (int i=0;ioldLen;i++)
{
first = str.charAt(i);
end = str.charAt(point-1);
point--;
if (first == end)
{
newLen++;
}
}
if (oldLen == newLen)
{
return true;
}else {
return false;
}
}
public static void main(String[] args) {
for(int k = 1000;k9999;k++){
boolean is = check(k);
if (is)
{
System.out.println(k+"是回文数");
}else {
// System.out.println(k+"不是回文数");
}
}
}
1001是回文数
1111是回文数
1221是回文数
1331是回文数
1441是回文数
1551是回文数
1661是回文数
1771是回文数
1881是回文数
1991是回文数
2002是回文数
2112是回文数
2222是回文数
2332是回文数
2442是回文数
2552是回文数
2662是回文数
2772是回文数
2882是回文数
2992是回文数
3003是回文数
3113是回文数
3223是回文数
3333是回文数
3443是回文数
3553是回文数
3663是回文数
3773是回文数
3883是回文数
3993是回文数
4004是回文数
4114是回文数
4224是回文数
4334是回文数
4444是回文数
4554是回文数
4664是回文数
4774是回文数
4884是回文数
4994是回文数
5005是回文数
5115是回文数
5225是回文数
5335是回文数
5445是回文数
5555是回文数
5665是回文数
5775是回文数
5885是回文数
5995是回文数
6006是回文数
6116是回文数
6226是回文数
6336是回文数
6446是回文数
6556是回文数
6666是回文数
6776是回文数
6886是回文数
6996是回文数
7007是回文数
7117是回文数
7227是回文数
7337是回文数
7447是回文数
7557是回文数
7667是回文数
7777是回文数
7887是回文数
7997是回文数
8008是回文数
8118是回文数
8228是回文数
8338是回文数
8448是回文数
8558是回文数
8668是回文数
8778是回文数
8888是回文数
8998是回文数
9009是回文数
9119是回文数
9229是回文数
9339是回文数
9449是回文数
9559是回文数
9669是回文数
9779是回文数
9889是回文数
哪不懂在问我吧
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = scanner.next();
boolean isloop = isLoop(str);
if (isloop) {
System.out.println(str + "是回文字符");
} else {
System.out.println(str + "不是回文字符");
}
}
public static boolean isLoop(String str) {
for (int i = 0, j = str.length() - 1; i str.length() / 2; i++, j--) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
}
return true;
}
}
对于回文这个问题,我们一般的解决方法是用递归
package com.axjy.yzn;
public class Recursive {
public static void main(String[] args) {
System.out.println("Is abcba a Palindrome?"+isPalindrome("abcdcba"));
}
public static boolean isPalindrome(String s){
if(s.length()=1){
return true;
}else if(s.charAt(0) != s.charAt(s.length()-1)){
return false;
}
return isPalindrome(s.substring(1,s.length()-1));
}
}
这段代码是判断输入的字符串是不是回文。
所谓回文,是指诸如:abcba这样的字符串,也就是说第一个字母也最后一个字母相同,第二个字母与倒数第二个字母相同,以些类推。
这段代码的关键是下面这几句:
while (j = (i / 2) -1 word.charAt(j) == word.charAt(i - j - 1))
j++;
这个就是从字符串的第一个字母开始逐一判断是否满足回文的要求,如果所有的都满足,那么,这个循环结束时,j = (i/2),这样就可以用下面的条件语句来判断是否为回文了。
下面是这段代码的注释,希望能帮到你~!
import java.util.Scanner;
public class PalindromeV1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//接受从控制台的输入
System.out.println("输入一个字符串: ");
String word = sc.next();//将用户输入的字符串保存到word中
int i = word.length();//获取输入的字符串的长度,保存到i中
int j = 0;//初始化变量j
//从字符串的第一个字母开始逐一判断是否满足回文的要求,如果所有的都满足,那么,这个循环结束时,j = (i/2)
while (j = (i / 2) - 1 word.charAt(j) == word.charAt(i - j - 1))
j++;
//判断是否为回文
if (j == i / 2)
System.out.println("输入字符串是回文.");
else
System.out.println("输入字符串不是回文.");
}
}
这个问题,你可以逆向思考
现在出现的现象是无论输入什么,最终都会是回文,那也就是说,当执行
if(str1.equals(str2)){
System.out.println("是回文");}
else{
System.out.println("不是回文");}
一定都是执行的第一个打印语句
也就是说str1.equals(str2)一定返回true
也就是说这equals两个比较对象一定是相等,换句话说这个两个对象其实指的是一个对象,只是不同的引用名而已
也就是说str1和str2都是指的一个StringBuffer对象
也就是说reverse()方法是直接返回了本对象
查看源码证实:
/**
* @since JDK1.0.2
*/
@Override
public synchronized StringBuffer reverse() {
toStringCache = null;
super.reverse();
return this;
}
可以看到最终返回this,也就是返回的是本对象,也就证实了刚的想法
所以综上所诉,现在再来看一下整个代码的执行过程
创建了一个StringBuffer对象str1,里面包装的字符串是"上海自来水
"
打印对象str1,所以此时打印的是:上海自来水
给对象str1调用reverse()方法,此时并没有新创建一个StringBuffer,而是直接修改了str1里面的包装字符串,改为"水来自海上",并返回了str1对象给str2
所以str1和str2其实都指的是一个StringBuffer(里面包含的都是"水来自海上")
此时打印str2,当然显示的是"水来自海上",其实若这是你再打印哈str1就明白了,因为这个是str1也打印出来的是"水来自海上"
个人建议写法
因为你只是需要做一个回文的功能,因此可以只是把StringBuffer的reverse方法作为一个工具即可,所以建议如下写法
String str1 = "上海自来水";
System.out.println("原来的话为:"+str1);
String str2=new StringBuffer(str1).reverse().toString();
System.out.println("正话反说为:"+str2);
if(str1.equals(str2)){
System.out.println("是回文");}
else{
System.out.println("不是回文");}
看你的要求真麻烦
给你一个简单的不行联系我
import java.util.Scanner;
public class test{
public static void main(String []dafd){
int num=(new Scanner(System.in)).nextInt();
String s=num.toString();
boolean b=true;
for(int i=0;is.length/2;i++){
if(s.charAt(i)!=s.charAt(s.length-i-1)){
b=false;
break;
}
}
System.out.pirntln(num+(b?"是":"不是")+"回文数");
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流