问题描述
- java中字符类型与数字类型比较的问题
-
编写程序将由数字及字符组成的字符串中的数字截取出来并按顺序输出,例如: “ABC137GMNQQ2049PN5FFF”输出结果应该为 01234579。
代码如下 求解排序后的for循环输出为什么要这样写,有点不懂!
public class www {public static void main(String[] args) {
String str="ABC137GMNQQ2049PN5FFF";
char[] beforechars=str.toCharArray();
char[] afterchars=new char[beforechars.length];
int j=0;
for(int i=0;i
if(beforechars[i]>='0' && beforechars[i]<='9'){
afterchars[j++]=beforechars[i];
}
}
Arrays.sort(afterchars);//排序
for(int i=(afterchars.length-j);i<afterchars.length;i++){System.out.print(afterchars[i]);
}
}
}
解决方案
这个程序写得太麻烦
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String str="ABC137GMNQQ2049PN5FFF";
char[] beforechars = str.toCharArray();
Arrays.sort(beforechars);//排序
int n = 0;
while (beforechars[n] >= '0' && beforechars[n] <= '9') n++;
char[] afterchars = new char[n];
for(int i= 0;i<n;i++) {
afterchars[i] = beforechars[i];
System.out.print(beforechars[i]);
}
}
}
解决方案二:
你先使用正则去掉字母str.replaceAll("[A-Z]", ""),然后使用Arrays.sort()方法
解决方案三:
你的 for循环没写完吧
这个简单啊,就是String.toCharArray 会把字符串存在一个字符数组里面,就是上述的charBefordChars,然后循环遍历该数组,判断字符型里面的字符是不是 数字然后赋值给新的数组。
解决方案四:
上线的项目中被商户发现一个问题,当Amount数字类型前面带0时,会导致代码报错:var amount = 000120.00; // 脚本报错; if( amount > 200) {...}后来发现数字类型前面为0时,脚本会把它当成8进制进行运算;八进制后面还有个".00",肯定会报错;然后把代码改成了:var amount = "000120.00";? //字符串类型 ......
答案就在这里:数字类型和字符类型的比较