你在調用?s1.reverse(); 的時候,同時把 s1 自己也給反轉了,然后這個方法返回 s1 的引用。所以 s1 和 s2 實際上指向的是同一個 StringBuffer 對象,內部的字符串自然也是一樣的。
成都創(chuàng)新互聯(lián)公司是一家專注于成都網站制作、成都網站建設與策劃設計,林芝網站建設哪家好?成都創(chuàng)新互聯(lián)公司做網站,專注于網站建設10余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:林芝等地區(qū)。林芝做網站價格咨詢: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?+?"是回文數");??
}
望采納