如何为基本数​​据类型添加前缀

时间:2014-06-06 14:01:44

标签: java numbers decimalformat

我有一个问题。我希望用户输入一些数字,然后我将输入转换为字符串,然后我将计算字符串的长度,如果它小于8,我想在输入中添加更多的零使其成为8所以我可以用这个数字来做一些工作人员。我试过使用decimalformat但它不起作用。 PLZ帮助

提前致谢

int s=Integer.parseInt(s1.readLine());

      String news=String.valueOf(s);
      if(news.length()<8){
          DecimalFormat myformat=new DecimalFormat("00000000");
        String out= myformat.format(s);
        int onth=(Integer.valueOf(out)).intValue();
        s=onth;
      }else{
      System.out.format("your number is: %d\n",s); 

4 个答案:

答案 0 :(得分:1)

忘记使用DecimalFormat。

将格式更改为以下

System.out.format("your number is: %08d\n",s)

%08d将以零为首,宽度为8。

这只会以您请求的格式显示数字。正如本主题中其他地方所述,将其视为数字会删除前导零。

但是,如果要将其存储在String变量中,可以使用

String intString = String.format("%08d", s);

存储它。

  • 更新 *

因为您特别需要在子字符串之间获取一系列数字 以下代码将执行您想要的操作。

private static int getSubNumber(int startIndex, int stopIndex, int number) {
    String num = String.format("%08d", number);     
    return Integer.parseInt(num.substring(startIndex, stopIndex));
}

如果您传入要转换的数字,它会将其更改为字符串,然后将您传入的两个索引之间的子字符串转换回数字

System.out.println(getSubNumber(2,5,12345678));   // = 345
System.out.println(getSubNumber(2,5,12345));      // = 12
System.out.println(getSubNumber(2,5,123));        // = 0

这是非包容性的,getSubNumber(2,5,...)获取位置2,3和4不是5的值。

对于144的示例,使用起始索引2,停止索引6的位置2,3,4和5

System.out.println(getSubNumber(2,6,144));        // = 1

答案 1 :(得分:0)

即使您在int前面加零,实际值也会更改为原始值。如果你想要填充,你必须使用字符串。 out变量将为您提供结果。

根据评论进行更新

import java.util.Scanner;

public class SquareSubString {

    public static void main(String[] args) {
        String userInputSquare = getSquaredInput();
        int digits2to5 = Integer.parseInt(userInputSquare.substring(2, 6));
        System.out.println("Squre of digits 2 to 5 is : " + (digits2to5 * digits2to5));
    }

    private static String getSquaredInput() {
        System.out.println("Enter a number : ");
        Scanner in = new Scanner(System.in); 
    int input = in.nextInt();
    in.close();
        return String.format("%08d", (input * input));
    }

}

答案 2 :(得分:0)

如果您需要在值之后添加0,则可以将其乘以10 pow丢失的数字0:

int result = Integer.parseInt(news);
if(news.length()<8){
    int diff = 8 - news.length();
    result = result * Math.pow(10, diff);    // ==> result = result * 10^(8 - news.length())
}

我认为这是最简单的方法。

编辑啊,是的......问题中有prefix。没关系!

答案 3 :(得分:0)

DecimalFormat是按照我们给出模式的方式格式化数字。

要附加零,请按照以下步骤操作: Add leading zeroes to a string