Java 如何为基元数据类型添加前缀

Java 如何为基元数据类型添加前缀,java,numbers,decimalformat,Java,Numbers,Decimalformat,我有个问题。我希望用户输入一些数字,然后将输入转换为字符串,然后计算字符串的长度,如果小于8,我希望向输入中添加更多的零,使其为8,以便我可以对数字进行一些处理。我尝试使用decimalformat,但它不起作用plz帮助 提前感谢 int s=Integer.parseInt(s1.readLine()); String news=String.valueOf(s); if(news.length()<8){ DecimalFormat my

我有个问题。我希望用户输入一些数字,然后将输入转换为字符串,然后计算字符串的长度,如果小于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); 
ints=Integer.parseInt(s1.readLine());
字符串新闻=String.valueOf(s);

如果(news.length()即使在int前面加零,实际值也将更改为原始值。如果需要填充,则必须使用string。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())
}
int result=Integer.parseInt(新闻);
如果(news.length()结果=结果*10^(8-news.length())
}
我认为这是最简单的方法


编辑啊,是的……问题中有
前缀
。别管了!

忘了使用十进制格式

将格式更改为以下格式

System.out.format("your number is: %08d\n",s)
%08d将以零开头,宽度为8

这将仅以您请求的格式显示数字。如本线程其他部分所述,将其视为数字将删除前导零

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

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、3、4和5使用开始索引2、停止索引6

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

DecimalFormat是以我们给出模式的方式格式化数字

要附加零,请按照以下步骤操作:

发生了什么?请输入所有相关代码(此处未关闭您的else…)结果是什么?您希望得到什么?有了更多关于您希望对该值执行的计算类型的信息,我们可以提供更具体的建议。@Ipratlong,伙计们,似乎我无法编辑我的问题。但是,当我将字符串转换为int时,我无法看到添加的零,但我需要它们以便为了能够将数字转换回字符串,获取一个子字符串,将该子字符串转换为int,整数的平方。例如,我想得到类似00000144的值(假设用户输入144),在索引[2-5]处获取子字符串求平方。plz help,因为我的int只给了我144,并删除了所有附加的零!!但我想要它们!!@JamesA men,看起来我无法编辑我的问题。但是当我转换字符串(out)时会发生什么对于int,我无法看到添加的零,但我需要它们,以便能够将数字转换回字符串,获得一个子字符串,将子字符串转换为int,整数的平方。例如,我想获得00000144(假设用户输入144),在索引[2-5]处获得子字符串求平方。请帮忙,因为我的int只给了我144,并删除了所有附加的零!!但我想要它们!!-我想他需要把它作为一个数字来处理,根据“我可以用这个数字做一些工作人员”的说法。你不能将其作为int,但总是作为字符串。但可能我不理解其需要。我认为他需要在其值后添加0。否?@Ipratlong是的!我想在数字中添加一些零,然后将其转换为int,并且仍然能够看到添加的零。例如(00000144)因此,我可以将数字再次转换为字符串,得到从索引2(零)开始到索引5(1)的子字符串将其转换为int并求squre。诸如此类。让我更新我的question@Ipratlong结果的值是多少?是0吗?10从何而来?这是否有助于向用户编号中添加一些零?例如,用户类型144,因为144I的问题正好相反。323将是32300000:).我不理解我想的问题。因此我无法将数字转换为(int、long、double或float)并获得添加的零?例如00000144?因为我想再次将数字转换为字符串,获得索引[2-5]处的子字符串,假设它是0001,将子字符串转换为整数,平方子字符串。有什么方法或公式可以使用吗?因为我在我的问题中尝试了上述方法,但从未奏效。理想情况下,前缀
0
仅在显示值的情况下才有意义。对于任何算术运算,前面的零将被忽略。因此如果你想用这些零进行操作,以字符串的形式进行操作,当你想进行平方运算或其他算术运算时,将其转换为整数。伙计,所以即使我将其转换为整数或浮点,我也无法得到零?没有公式或方法?就好像在这上面浪费了10个多小时,先生!通过int,float等。你可以有一个操作系统。它将被忽略。您需要进行字符串操作。如果您能说明您的要求,我可以尝试创建一个示例程序。好的,这就是我想要的。我希望用户键入一个数字。我的程序将对用户数进行平方运算。平方运算的结果必须是8位长度。如果不是,我的程序将在最后添加零这是因为我的程序将从索引2到索引5取数字(例如,如果乘法结果是12345678,[2-5]处的数字是3456)我的问题是,如何将字符串转换回整数或双精度,并且仍然能够看到添加的零。例如,将字符串格式化为