A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙佳奇 中级黑马   /  2014-9-6 19:32  /  7181 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
题目 一个5位数,判断他是否为回文数。即12321是回文数,个位与万位相同,十位与千位相同

最佳答案

12 个回复

倒序浏览
  1. package 回文数;

  2. import java.util.Scanner;

  3. public class HeiMa2 {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 Scanner in = new Scanner(System.in);
  7.                 int num = in.nextInt();
  8.                 in.close();
  9.                 if (!(num >= 10000 & num <= 99999)) {
  10.                         System.out.println("你输入的不是五位数");
  11.                         System.exit(0);
  12.                 }
  13.                 String str = String.valueOf(num);
  14.                 StringBuffer sb = new StringBuffer(str);
  15.                 String strRev = sb.reverse().toString();
  16.                 if (str.equals(strRev))
  17.                         System.out.println("您输入的是回文数");
  18.                 else
  19.                         System.out.println("您输入的不是回文数");
  20.                
  21.         }

  22. }
复制代码
回复 使用道具 举报
本帖最后由 ybtx370 于 2016-1-26 13:53 编辑
  1. ddddddddddddddddddddddddddddddddddddddddddddddddddddd
复制代码

评分

参与人数 1黑马币 +6 收起 理由
加油程序员 + 6 神马都是浮云

查看全部评分

回复 使用道具 举报
package java主类结构;

import javax.swing.JOptionPane;  
public class Demo1  
{   
    public static void main(String args[])  
    {  
        loopNumber();     
    }  
     static  void loopNumber(){  
        int number=0,d5,d4,d3,d2,d1;  
        String str=JOptionPane.showInputDialog("输入一个10000至99999之间的数");  
        number=Integer.parseInt(str);  
        if(number<100000&&number>0) //判断number在1至99999之间的条件  
            {  
                d5=number/10000;   //计算number的最高位(万位)d5  
                d4=(number/1000)%10 ;  //计算number的千位d4  
                d3=(number/100)%10 ;  //计算number的百位d3  
                d2=(number%100)/10;  
                d1=number%10;  
              if(d5 !=0)  //判断number是5位数的条件  
                {  
                  System.out.println(number+"是5位数");  
                  if(d5 ==d1 && d4 == d2) //判断number是回文数的条件  
                   {  
                      System.out.println(number+"是回文数");  
                   }  
                  else  
                   {   
                     System.out.println(number+"不是回文数");  
                   }  
                }  
              else if(d5 == 0 && d4 != 0)  //判断number是4位数的条件  
                {  
                   System.out.println(number+"是4位数");  
                   if(d1 ==d4&&d2==d3) //判断number是回文数的条件码  
                   {  
                        System.out.println(number+"是回文数");  
                   }  
                  else  
                   {   
                      System.out.println(number+"不是回文数");  
                   }  
                }  
                else if(d5 == 0&&d4 == 0&&d3 !=0)  //判断number是3位数的条件  
                {  
                   System.out.println(number+"是3位数");  
                   if(d3 == d1) //判断number是回文数的条件  
                   {  
                        System.out.println(number+"是回文数");  
                   }  
                  else  
                   {   
                    System.out.println(number+"不是回文数");  
                   }  
                }  
             else if(d2!=0)  
                {  
                  System.out.println(number+"是2位数");  
                   if(d1==d2)  
                   {  
                       System.out.println(number+"是回文数");  
                   }  
                  else  
                   {   
                     System.out.println(number+"不是回文数");  
                   }  
                }  
             else if(d1!=0)  
                {  
                  System.out.println(number+"是1位数");  
                   System.out.println(number+"是回文数");  
                }  
            }  
         else  
            {  
               System.out.printf("\n%d不在10000至99999之间",number);  
            }  
    }  
}  
回复 使用道具 举报
  1. package com.cai.test;

  2. import java.util.Scanner;

  3. public class PalindromicNumber {
  4.        
  5.         public static void main(String[] args){
  6.                 Scanner sc = new Scanner(System.in);
  7.                 while(true){
  8.                         System.out.println("请输入五位数(如12345):");
  9.                         int number = sc.nextInt();
  10.                        
  11.                         if(isPalindromicNumber(number)){
  12.                                 System.out.println(number+"是回文数");
  13.                         }else{
  14.                                 System.out.println(number+"不不是回文数");
  15.                         }
  16.                 }
  17.         }
  18.        
  19.         public static boolean isPalindromicNumber(int number){
  20.                 //创建一个barrel数组,每个元素分别保存个位、十位、百位、千位、万位的数值
  21.                 int[] barrel = new int[5];
  22.                 int n = 1;
  23.                 int i = 0;
  24.                
  25.                 while(n<=number){
  26.                         barrel[i++] = (number/n)%10;
  27.                         n *= 10;
  28.                 }
  29.                 //number默认不是回文数
  30.                 boolean isPNumber = false;
  31.                 //如果个位数==万位数且十位数==千位数,则number是回文数
  32.                 if(barrel[0]==barrel[4] && barrel[1]==barrel[3]){
  33.                         isPNumber = true;
  34.                 }
  35.                
  36.                 return isPNumber;
  37.         }

  38. }
复制代码
回复 使用道具 举报
本帖最后由 十万一千 于 2014-9-18 19:14 编辑
  1. <span style="line-height: 30.7999992370605px;">
  2. </span>
复制代码
/*自己测试下啦,应该是可以的了*/
public static boolean huiwenDetection(String inputString) {
                int inputStringLength = inputString.length();
                if (inputStringLength % 2 == 0) {
                        return false;
                } else {
                        int halfInputStringLength = inputStringLength / 2;
                        for (int i = 0; i < halfInputStringLength; i++) {
                                if (inputString.charAt(i) != inputString.charAt(inputStringLength - 1 - i)) {
                                        return false;
                                }
                        }
                        return true;
                }
        }
回复 使用道具 举报
  1. /*
  2. * 程序的版权和版本声明部分
  3. * Copyright (c) 2014
  4. * All rights reserved.
  5. * 文件名称:  TestNumber.java                           
  6. * 作    者:  张首拓                        
  7. * 完成日期:  2014 年 9 月 20 日
  8. * 版 本 号:  v1.0        

  9. * 对任务及求解方法的描述部分
  10. * 问题描述:编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个*数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数*和原数相同,例如12121、3223都回文数。代码附后。
  11. * 算法说明:
  12. * 程序头部的注释结束
  13. */
  14. import javax.swing.JOptionPane;
  15. public class TestNumber
  16. {  
  17.     public static void main(String args[])
  18.     {
  19.         loopNumber();   
  20.     }
  21.      static  void loopNumber(){
  22.         int number=0,d5,d4,d3,d2,d1;
  23.         String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");//对话框的形式
  24.         number=Integer.parseInt(str);//转换
  25.         if(number > 1 && number < 99999) //判断number在1至99999之间的条件
  26.             {
  27.                 d5 = number / 10000;//计算number的最高位(万位)d5
  28.             d4 = number / 1000 % 10;//计算number的千位d4
  29.             d3 = number % 1000 / 100;  //计算number的百位d3
  30.             d2=number % 100 / 10;
  31.             d1=number % 10;
  32.             if(d5 > 0)  //判断number是5位数的条件
  33.                     {
  34.                     System.out.println(number+"是5位数");
  35.                     if(d5 == d1 && d4 == d2) //判断number是回文数的条件
  36.                             {
  37.                             System.out.println(number+"是回文数");
  38.                             }
  39.                     else
  40.                     {
  41.                             System.out.println(number+"不是回文数");
  42.                             }
  43.                     }
  44.             else if(d5 == 0 && d4 > 0)  //判断number是4位数的条件
  45.                     {
  46.                     System.out.println(number+"是4位数");
  47.                     if(d1 == d4 && d2 == d3) //判断number是回文数的条件码
  48.                             {
  49.                             System.out.println(number+"是回文数");
  50.                             }
  51.                     else
  52.                     {
  53.                             System.out.println(number+"不是回文数");
  54.                             }
  55.                     }
  56.             else if(d5 == 0 && d4 == 0 && d3 > 0)  //判断number是3位数的条件
  57.                     {
  58.                     System.out.println(number+"是3位数");
  59.                     if(d1 == d3) //判断number是回文数的条件
  60.                             {
  61.                             System.out.println(number+"是回文数");
  62.                             }
  63.                     else
  64.                     {
  65.                             System.out.println(number+"不是回文数");
  66.                             }
  67.                     }
  68.             else if(d2!=0)
  69.             {
  70.                     System.out.println(number+"是2位数");
  71.                     if(d1==d2)
  72.                     {
  73.                             System.out.println(number+"是回文数");
  74.                             }
  75.                     else
  76.                    {
  77.                             System.out.println(number+"不是回文数");
  78.                             }
  79.                     }
  80.             else if(d1!=0)
  81.                 {
  82.                   System.out.println(number+"是1位数");
  83.                   System.out.println(number+"是回文数");
  84.                 }
  85.             }
  86.          else
  87.             {
  88.                System.out.printf("\n%d不在1至99999之间",number);
  89.             }
  90.     }
  91. }
复制代码
回复 使用道具 举报
  1. @Test
  2.         public void testMyMain()
  3.         {
  4.                 Scanner sc=new Scanner(System.in);
  5.                 System.out.println("请输入长度为5的数字");
  6.                 String temp=sc.next();
  7.                 if(temp.length()==5)
  8.                 {
  9.                         System.out.println(isHuiWen(temp));
  10.                 }
  11.         }
  12.         //简单问题简单做。
  13.         private Boolean isHuiWen(String s) {
  14.                 if(s.charAt(0)==s.charAt(4))//依次判断第一个和最后一个数
  15.                         if(s.charAt(1)==s.charAt(3))//满足条件则判断第二个和倒数第二个
  16.                                 return true;//中间的不用判断。
  17.                 return false;//不满足任意条件则返回false表示不是回文数
  18.         }
复制代码

楼主的积分那么高不知道为什么要出这么简单的题,希望对你有所帮助。
回复 使用道具 举报
ybtx370 发表于 2014-9-6 20:16
这个思路基本如上,上面这个不限制几位数,几位数都可以测出是否回文数
希望能帮到楼主,望采纳
...

这个代码写的赞:victory:
回复 使用道具 举报
解决思路:
   这个是一个判断回文问题,虽然所判断的值是数字,由于直接采用数值的判断方式不方面,但是可以将其转成字符串形式,这种方式只是在内存的形式转换了一下而已。下面是字符串的实现方法:

package com.itheima;

import java.util.*;

/**
* 1、 判断一个字符串是否是对称字符串,
* 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串,
* 同样的道理也可以将数字转化成 字符串就可以判断了
*
* @author 荣英洁
*/
public class Test1 {

        public static void main(String[] args) {
                /**
                 * 采用菱形表达式,定义字符串集合
                 */
                List<String> list = new ArrayList<>();
                /**
                 * 添加需要测试是否为对称字符串的数据
                 */
               
                int i = 321123;
                list.add(""+i);
               
                list.add("aba");
                list.add("abba");

                /**
                 * 增强for循环,取出所有数据,然后逐个判断
                 */
                for (String s:list) {
                        if(isSymmetric(s)){
                                System.out.println(s+":是对回文");
                        }else{
                                System.out.println(s+":不是回文");
                        }
                }
        }

        /**
         * 输入一个字符串判断是否对称
         * @param s
         *                 需要判断的字符串
         * @return
         *                 是对称,返回true,不是对称返回false
         */
        public static boolean isSymmetric(String s){
                /**
                 * 字符串是否对称默认值true
                 */
                boolean is=true;
                int length = s.length();
                /**
                 * 字符串长度低于2,没有对称与非对称可言,直接返回false
                 */
                if(length<2){
                        return false;
                }
                /**
                 * 判断是否对称
                 */
                for (int i = 0; i < length/2; i++) {
                        if(s.charAt(i)!=s.charAt(length-i-1)){
                                is=false;
                        }
                }
                return is;
        }
}
回复 使用道具 举报
  1. package com.itheima.io;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. //接收键盘输入字符,判断是否是回文数(如果不是数字,要做出提示),输入任意大小写over,程序退出.
  6. public class Test {
  7.         public static void main(String[] args)throws IOException
  8.         {
  9.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  10.                 String line = null ;
  11.                 int flag = 0;//0为不是回文数
  12.                 StringBuilder sb = new StringBuilder();
  13.                 System.out.println("请输入数字(输入over可退出本程序):");
  14.                 while((line = br.readLine())!=null)
  15.                 {
  16.                         if(line.toUpperCase().equals("OVER"))
  17.                         {
  18.                                 System.out.println("退出程序!");
  19.                                 break;
  20.                         }
  21.                         for(Character c :line.toCharArray())
  22.                         {
  23.                                 flag = c<'0'||c>'9'?2:0;//2为不是数字
  24.                                         sb.append(c);
  25.                         }
  26.                         flag = flag!=2&&line.equals(sb.reverse().toString())?1:flag;//在是数字的情况下判断是否回文数(1)
  27.                         sb.delete(0, sb.length());
  28.                         line = flag==1?line+"是回文数,请重新输入:":line+"不是回文数,请重新输入:";//以下两句line另作返回语句用
  29.                         line = flag==2?"不是数字,请重新输入":line;
  30.                         System.out.println(line);
  31.                 }
  32.                 br.close();
  33.         }
  34. }
复制代码
回复 使用道具 举报
题目已经说是5位数,那么就简单了
万位:number/10000
千位:(number/1000)%10
百位:number/100)%10
十位:(number%100)/10
个位:number%10;
回复 使用道具 举报

我看楼主是在耍大家哦....  上楼的代码写的这么好都不给分...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马