• 【编程题】数字黑洞


      附上Java实现代码。

     1 package NetEasy;
     2 
     3 /**
     4  * 数字黑洞
     5  */
     6 
     7 import java.util.Scanner;
     8 
     9 public class NumBlackHole {
    10 
    11     public static void main(String[] args) {
    12         Scanner in = new Scanner(System.in);
    13         String number = in.next();
    14 //        StringBuffer numStr = new StringBuffer();
    15 //        numStr.append(number);
    16         if(number.charAt(0)==number.charAt(1) &&
    17                 number.charAt(0)==number.charAt(2)&&
    18                 number.charAt(0)==number.charAt(3))
    19             System.out.println(number+" - "+number+" = 0");
    20         else{
    21             boolean flag = true;
    22 //            int num = Integer.valueOf(number);
    23             while(flag){
    24                 number = computeNum(number);
    25                 if(number.equals("6174"))
    26                     flag = false;
    27             }
    28         }
    29 
    30     }
    31 
    32     private static String computeNum(String number) {
    33 //        String number = Integer.valueOf(num).toString();
    34         StringBuffer numOrder = new StringBuffer(number);
    35         for(int i = 0; i < 4; i++){
    36             for(int j = i; j < 4; j++){
    37                 if(numOrder.charAt(i) < numOrder.charAt(j)){
    38                     char temp = numOrder.charAt(i);
    39                     numOrder.setCharAt(i, number.charAt(j));
    40                     numOrder.setCharAt(j, temp);
    41                 }
    42             }
    43         }
    44 //        StringBuffer numUpper = numOrder;  //这样复制,后面numOrder反转了 numUpper会跟着变化
    45         String numUpper = numOrder.toString();
    46         String numLower = numOrder.reverse().toString();
    47         int n = Integer.valueOf(numUpper)-Integer.valueOf(numLower);
    48         StringBuffer result = new StringBuffer(Integer.valueOf(n).toString());
    49         if(result.length() == 1)
    50             result.insert(0, "000");
    51         if(result.length() == 2)
    52             result.insert(0, "00");
    53         if(result.length() == 3)
    54             result.insert(0, "0");
    55         String resultnum = result.toString();
    56         System.out.println(numUpper+" - "+numLower+" = "+ resultnum);
    57         return resultnum;
    58     }
    59 
    60 }
  • 相关阅读:
    ReentrantLock和synchronized区别和联系?
    从上向下打印二叉树
    字符串的全排列
    二叉树中和为某一值得路径 java实现
    三大框架面试题
    SQL语句总结
    [terry笔记]Oracle10g/11g安装-redhat5.5
    [terry笔记]Oracle会话追踪(二):TKPROF
    [terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046
    [terry笔记]IMPDP报错ORA-39083 Object type TYPE failed to create ORA-02304
  • 原文地址:https://www.cnblogs.com/focusonepoint/p/5743123.html
Copyright © 2020-2023  润新知