黑马程序员技术交流社区

标题: 今晚阻碍我睡觉的题,求解,怎么做 [打印本页]

作者: 杨立考    时间: 2012-9-25 23:09
标题: 今晚阻碍我睡觉的题,求解,怎么做
本帖最后由 屈俊材 于 2012-9-26 07:56 编辑

从键盘输入一个5位数整数,判断其个位是否与万位相等并且十位是否与千位相等。

作者: 明光照    时间: 2012-9-25 23:16
import java.util.Scanner;

public class Test_2 {
        public static void main(String args[]){
                Scanner Reader=new Scanner(System.in);
               
                String s=Reader.next();
                if(s.charAt(0)==s.charAt(4)&&s.charAt(1)==s.charAt(3)){
                        System.out.println("符合要求");
                }
                else{
                        System.out.println("不符合要求");
                }
               
        }
}
作者: 程振    时间: 2012-9-25 23:17
  1. import java.util.Scanner;

  2. public class Demo {
  3.         public static void main(String[] args) {
  4.                 Scanner scanner = new Scanner(System.in);
  5.                 int value;

  6.                 // 假的输入是有效的5位数
  7.                 while (scanner.hasNextInt()) {
  8.                         value = scanner.nextInt();
  9.                         int a = value / 10000;
  10.                         int b = (value / 1000) % 10;
  11.                         int d = (value % 1000) / 100;
  12.                         int e = value % 10;
  13.                        
  14.                         if(a==e && b==d){
  15.                                 System.out.println(true);
  16.                         }else{
  17.                                 System.out.println(false);
  18.                         }

  19.                 }

  20.                 scanner.close();
  21.         }

  22. }
复制代码

作者: 杨立考    时间: 2012-9-25 23:26
还是有点不解,能加注释吗?
作者: 张小龙    时间: 2012-9-25 23:27
这里给出实现方法,假设传入的是一个五位数:
public int[] method(int num){          //假设传入的是一个正确的五位数,然后返回一个两个长度的整形数组
  int[] array=new int[2];
  int numWan=num/10000;
  int numGe=num%10;                   //这里用四个变量定义了这个五位数的万,千,十,个位数的数字
  int numQian=num/1000-numWan*10;
  int numShi=(num%100)/10;
  if(numWan==numGe){            //判断万位与各位
   array[0]=1;
  }
  else
   array[0]=0;
  if(numQian==numShi){        //判断十位与千位是否相等
   array[1]=1;
  }
  else
   array[1]=0;
  return array;       //array数组的array[0]为1,代表万位与各位相等,0则代表不相等,array[1]为1代表千位与十位相等 0则代表不相等
}
希望能对楼主有帮助

作者: 燃烧端午    时间: 2012-9-25 23:36
  1. public static void main(String[] args) {
  2.                 Scanner sc = new Scanner(System.in);
  3.                 System.out.println("请输入五位数:");
  4.                 int num = sc.nextInt();

  5.                 String numStr = String.valueOf(num);
  6.                 String numStrArr[] = numStr.split("");
  7.                 if (numStrArr[1].equals(numStrArr[5])
  8.                                 && numStrArr[2].equals(numStrArr[4])) {
  9.                         System.out.println("是");
  10.                 } else {
  11.                         System.out.println("不是");
  12.                 }
  13.         }
复制代码

作者: 吴兵    时间: 2012-9-25 23:43
  1. import java.util.Scanner;

  2. public class Test
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                         //从键盘录入5位数
  8.                         Scanner in= new Scanner(System.in);
  9.                         String str = in.nextLine();
  10.                        
  11.                         //将字符串转换为字符数组
  12.                         char[] ch=str.toCharArray();
  13.                        
  14.                         //取出数组里面的每个数,并将字符转换为基本数据类型
  15.                         int a=Integer.parseInt(String.valueOf(ch[0]));//万位
  16.                         int b=Integer.parseInt(String.valueOf(ch[1]));//千位
  17.                         //int c=Integer.parseInt(String.valueOf(ch[2]));
  18.                         int d=Integer.parseInt(String.valueOf(ch[3]));//十位
  19.                         int e=Integer.parseInt(String.valueOf(ch[4]));//个位
  20.                        
  21.                         if(a==b&&d==e)
  22.                         {
  23.                                 System.out.println("相等!");
  24.                         }
  25.                         else
  26.                                 System.out.println("不相等!");
  27.                        
  28.         }

  29. }
复制代码

作者: 杨卫腾    时间: 2012-9-25 23:47
  1. import java.util.Scanner;

  2. public class Demo {
  3.         public static void main(String[] args)
  4.         {
  5.                 Scanner scanner = new Scanner(System.in);
  6.                 int value;
  7.                 //假的输入是有效的5位数
  8.                 while (scanner.hasNextInt()) {
  9.                
  10.                         value = scanner.nextInt();

  11.                         int w = value / 10000;//万位
  12.                         int q = (value / 1000) % 10;//千位
  13.                         int s = (value / 10) % 10;//十位
  14.                         int g = value % 10;//个位
  15.                         //想要那个位的数据,先求模再求余;
  16.                         if(w==g && q==s){
  17.                                         System.out.println(true);
  18.                                         break;
  19.                         }else{
  20.                                         System.out.println(false);
  21.                         }
  22.                 }
  23.                 scanner.close();
  24.     }
  25. }
复制代码
这是我修改那个哥们的代码,这个应该就行了,这个方法挺简单的。
作者: 杨立考    时间: 2012-9-25 23:53
谢谢大家  ,OK了
作者: 王海宇    时间: 2012-9-26 07:26
楼主这种问题也可以考虑用正则表达式来做,一行代码就解决了。例如:
  1. //待验证的整数
  2. String input = "12221";
  3. //通过正则表达式验证               
  4. System.out.println(input.matches("(\\d)(\\d)\\d\\2\\1"));
  5. //输出结果将会是true
复制代码
如果对正则表达式不熟悉的话,可以参考韩顺平老师的html+css+js视频教程里面对正则表达式的讲解


作者: IceLoveInFire丶    时间: 2016-9-26 22:05
正则 :
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String regex = "\\d\\d\\d\\2\\1";r
boolean flag = str.matches(str);

一个好的正则可以省去1000行代码




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2