编程算法基础-2.2串与数值的转换

16 篇文章 0 订阅

2.2串与数值的转换

串与整数的转换

把任何东西转化为串,只要把它加上一个空串,任何值和串相加,结果都是串。

 

Integer.parseInt将串转换为整数

 

有时也采用直接的逻辑方式

 

串转整数

String s = “9527”;

/*串转整数
String s = "9527";
*/
 
package StringToInteger;
 
public class StringToInt {
    public static void main(String[] args) {
       String s = "9527";
      
       /*
       int n = s.charAt(0)-'0';//ASCII-48,0的ASCII码为48
       n = n*10 + (s.charAt(1)-'0');//为了不被下一个数字覆盖掉,把n*10再加上新的数字
        n = n*10 + (s.charAt(2)-'0');
       */
       //写成循环如下
       int n=0;
       for(int i=0;i<s.length();i++){
           n = n*10 + (s.charAt(i)-'0');
       }
       System.out.println(n);
    }
}
9527

黑洞数

int n = 5346;

6543-3456=3087;//最大-最小,不足补零

8730-0378=8352;

8352-2358........

最终我们会陷入到某一个数字再也出不来!

/*黑洞数
int n = 5346;
6543-3456=3087;//最大-最小,不足补零
8730-0378=8352;
8352-2358........
最终我们会陷入到某一个数字再也出不来!
*/
 
package StringToInteger;
 
import java.util.Arrays;
 
public class BlackHoleNumber {
    public static void main(String[] args) {
       int n = 9527;
      
      
       while(true){
           char c[] = (n+"").toCharArray();//把数字转为char数组
           Arrays.sort(c);//排序,从小到大
          
           int min = 0;//求最小值
           for(int i=0;i<c.length;i++){
              min=min*10+(c[i]-'0');
           }
          
           int max = 0;//求最大值
           for(int i=c.length-1;i>=0;i--){//注意起始点为c.length-1
              max=max*10+(c[i]-'0');
           }
           int n2 = max-min;
           System.out.println(max+"-"+min+"="+n2);
           if(n2==n){
              break;//如果进入黑洞循环,跳出
           }
           n = n2;
       }
    }
}
9752-2579=7173
7731-1377=6354
6543-3456=3087
8730-378=8352
8532-2358=6174
7641-1467=6174

翻译

把大写数字翻译为整数:

一四零零六 ==> 14006

二五七 ==> 257

/*
翻译
把大写数字翻译为整数:
一四零零六 ==> 14006
二五七 ==> 257
*/
package StringToInteger;
 
public class TranslateStringToNumber {
    public static void main(String[] args) {
       String s = "一二三四五六七八九零";
//     String s = "a";
      
       int n = 0;//初始化结果整数
       for(int i=0;i<s.length();i++){
           if(translateToNumber(s.charAt(i))=='e'){//默认返回e
              System.out.println("输入有误。");
              break;
           }else{
              n=n*10+(translateToNumber(s.charAt(i))-'0');//不断地乘10+新的数
           }
       }
       System.out.println(n);
    }
   
    //将大写汉字转化为数字的方法
    public static char translateToNumber(char a){
       switch (a) {
       case '一': return '1';
       case '二': return '2';
       case '三': return '3';
       case '四': return '4';
       case '五': return '5';
       case '六': return '6';
       case '七': return '7';
       case '八': return '8';
       case '九': return '9';
       case '零': return '0';
       default: return 'e';
       }
    }
}
1234567890

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值