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?"是":"不是")+"回文數");
}
}
文章題目:java判斷回文字符代碼,判斷是否為回文字符串java
當前地址:http://vcdvsql.cn/article24/hsheje.html
成都網站建設公司_創新互聯,為您提供云服務器、電子商務、響應式網站、企業網站制作、外貿建站、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯