1.前导0
1.1 需要前导0
一些题目要求我们使用前导0,例如下面那道题,对此,我们可以采用%2d来控制输出printf("%02d",count);
表示不足两位的数字在数字前面添加0.
https://www.luogu.com.cn/record/49362041
1.2 不需要前导0
当然,我们也可以进行字符串操作
public static String method(String str){
char []arr = str.toCharArray();
String s ="";
boolean isFirst =true;//判断是否还在前导位
for(int i=0;i<arr.length;i++){
if(isFirst&&arr[i]=='0'){
}else{
isFirst = false;
s+=arr[i]+"";
}
}
return s;
}
运行结果:
2.后导0
2.1 需要后导0
和1.1同理,只要控制printf("%.2f")
来打印输出就好了
2.2 不需要后导0
一个double的2.0,如果想要输出2,怎么操作?
//方法1:利用数据类型转换
public static void method(double n){
int mid = (int)n;
if(mid == n){
System.out.println(mid);//将double转换为int就ok
}
}
//方法2:利用正则表达式
public static void method2(double n){
String mid =String.valueOf(n);
// 去掉多余的0
mid = mid.replaceAll("0+?$", "");
// 去掉'.'
s = s.replaceAll("[.]$", "");
}
//方法3:利用字符串操作
public static StringBuffer method3(double n){
String str =String.valueOf(n);
char []arr =str.toCharArray();
StringBuffer ans =new StringBuffer();
boolean isEnd = true;
for (int i = arr.length - 1; i >= 0; i--) {
if(isEnd&&arr[i]=='0'){
}else{
isEnd =false;
ans.append(arr[i]);
}
}
ans.reverse();
return ans;
}
运行结果:
相关推荐:解析常见的几种数位操作