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

来源:互联网 发布:淘宝人气店铺 编辑:程序博客网 时间:2024/06/16 09:49

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=71737731-1377=63546543-3456=30878730-378=83528532-2358=61747641-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

0 0