繁体   English   中英

如何为原始数据类型添加前缀

[英]how to prefix to a primitive data type

在这里我有一个问题。 我希望用户输入一些数字,然后将输入转换为字符串,然后计算字符串的长度,如果小于8,我想在输入中添加更多零以使其为8这样我就可以做一些职员。 我试图使用小数格式,但无法正常工作。 请帮助

提前致谢

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); 

不用使用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 NOT 5处的值。

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

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

即使您将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));
    }

}

如果需要在值后面加上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())
}

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

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

DecimalFormat是按照我们提供模式的方式来格式化数字。

并添加零,请按照下列步骤操作: 在字符串中添加前导零

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM