你在调用 s1.reverse(); 的时候,同时把 s1 自己也给反转了,然后这个方法返回 s1 的引用。所以 s1 和 s2 实际上指向的是同一个 StringBuffer 对象,内部的字符串自然也是一样的。
成都创新互联公司是一家专注于成都网站制作、成都网站建设与策划设计,林芝网站建设哪家好?成都创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:林芝等地区。林芝做网站价格咨询:18980820575
这样改:
public static void main(String[] args)
{
System.out.println("请输入一串数字:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
StringBuilder s1=new StringBuilder(s);
s1.reverse();
if(s1.toString().equals(s))
System.out.println("是回文数 ");
else
System.out.println("不 是回文数 ");
}
而且推荐单线程下使用 StringBuilder,它的方法因为没有加同步锁,所以效率比 StringBuffer 要高。
public static boolean isPalindrome(int x) {
if (x0) { return false; }
int len=1;
for (len=1; (x/len) = 10; len*=10 );
while (x != 0 ) {
int left = x / len;
int right = x % 10;
if(left!=right){
return false;
}
x = (x%len) / 10;
len /= 100;
}
return true;
}
package JOptionPane;
import javax.swing.JOptionPane;
/**
* @author songml
*
*/
public class huiwen1 {
/**
* @param args
*/
public static void main(String[] args) {
//bFlg为true的时候,显示对话框
//bFlg为false的时候,不显示对话框,程序结束
boolean bFlg = true;
while (bFlg) {
String inputValue = JOptionPane.showInputDialog("请输入一个五位整数");
//什么都没有输入的时候的处理
if ("".equals(inputValue) ){inputValue ="0";}
//点击"取消"时候的处理
if (null == inputValue ) {bFlg = false;continue;}
//五位数判断
if (inputValue.length() !=5) {
JOptionPane.showMessageDialog(null, "请输入一个五位数");
//跳出本次(上面的那个)while,目的是不运行下面的回文数判断
continue;
}
long inputValueLong = Long.parseLong(inputValue);
long temp = inputValueLong;
long reverseLong = 0L;
//回文数判断
while (inputValueLong != 0) {
reverseLong = reverseLong * 10 + inputValueLong % 10;
inputValueLong = inputValueLong / 10;
}
if (reverseLong == temp) {
JOptionPane.showMessageDialog(null, "你输入的是回文数");
bFlg =false;
} else {
JOptionPane.showMessageDialog(null, "你输入的不是回文数");
}
}
System.exit(0);
}
}
for(inti=10;i
回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
定义:一个回文数,它同时还是某一个数的平方,这样的数字叫做平方回数。例如:121。 100 以上至1000以内的平方回数只有3个,分别是:121、484、676。 其中,121是11的平方。
按照你的要求编写的,输出从0到max中用二进制表示和十进制表示都是回文数的Java程序如下:
import java.util.Scanner;
public class CCF {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个整数:");
int max=sc.nextInt();
for(int i=0;i=max;i++){
String num = String.valueOf(i);
String num2=Integer.toBinaryString(i);
String reversenum=new StringBuffer(num).reverse().toString();
String reversenum2=new StringBuffer(num2).reverse().toString();
if(reversenum.equals(num) reversenum2.equals(num2)){
System.out.println(i+"用二进制表示"+num2+"和十进制表示"+i+"都是回文数");
}
}
}
}
运行结果:
请输入一个整数:1000
0用二进制表示0和十进制表示0都是回文数
1用二进制表示1和十进制表示1都是回文数
3用二进制表示11和十进制表示3都是回文数
5用二进制表示101和十进制表示5都是回文数
7用二进制表示111和十进制表示7都是回文数
9用二进制表示1001和十进制表示9都是回文数
33用二进制表示100001和十进制表示33都是回文数
99用二进制表示1100011和十进制表示99都是回文数
313用二进制表示100111001和十进制表示313都是回文数
585用二进制表示1001001001和十进制表示585都是回文数
717用二进制表示1011001101和十进制表示717都是回文数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = sc.nextInt();
String str1 = num + "";
// String str1 = Integer.toString(num);
// String str1 = String.valueOf(num);
StringBuilder str2 = new StringBuilder(str1);
str2.reverse();
int count = 0;
for (int i = 0; i str1.length(); i++) {
if (str1.charAt(i) != str2.charAt(i)) {
System.out.println(str1 + "不是回文数");
break;
} else {
count++;
}
}
if (count == str1.length()) {
System.out.println(str1 + "是回文数");
}
望采纳