簡體   English   中英

如何在數組中添加前綴 0?

[英]How to add prefix 0s in an array?

我正在編寫一個 Java 程序,將數字數組修剪為長度為 10。如果數組小於 10,則程序應在數組前面加上 0,直到長度為 10。

例子:

 1234567890 :: 1234567890 12345678990:: 1234567899 1234 :: 0000001234
    int[] aa= new int[]{123456789};
    if(aa.length==10)
    {
        for (int i=0;i<=aa.length;i++)
        {
             system.out.println(aa[i]);
        } 
    }
    if(aa.length>0)
    {
        for(int i=0;i<=10;i++)
        {
            system.out.println(aa[i]);
        }
    }
    if(aa.length<10)
    {
        for(int i=0;i<=10;i++)
        {
            system.out.println(aa[i]);
        }
    }

我的代碼有問題嗎?

首先,動態大小的數組讓我覺得你想做一個ArrayList,而不是一個數組。 盡管如此,如果由於某種原因您正在處理不同長度的實際數組,它將是這樣的。

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[] lessThanTen = new int[] {1,2,3,4};
        int[] newArr = new int[10];

        int numZeros = 10 - lessThanTen.length;

        for (int i = 0; i < 10; i++) {
            if (i < numZeros) {newArr[i] = 0;}
            else {newArr[i] = lessThanTen[i - numZeros];}
        }

        System.out.println(Arrays.toString(newArr));
    }
}

首先, int不能超過 10 位數字,所以我假設您使用的是longs

  1. 要確定任何整數中的位數,請使用Math.log10()
  2. 如果數字具有 <= 10 位數字,請使用%010dprintf說明符,它允許 10 位數字的字段,在左側用 0 填充。
  3. 否則,轉換為字符串並使用 String.substring() 打印前 10 位數字;
      for (long n : new long[] { 123,12,1, 1234579911111L, 1234567890
      }) {
         if (Math.log10(n) <= 10) {
            System.out.printf("%010d%n", n);
         }
         else {
            System.out.printf("%s%n", Long.toString(n).substring(0, 10));
         }
      }

以上打印了以下內容:

0000000123
0000000012
0000000001
1234579911
1234567890

如果您將值作為字符串讀取,那么您只需執行以下操作。

  1. 如果字符串大於 >= 10 個字符,則取前 10 個字符的子字符串。
  2. 如果字符串小於 < 10,則根據需要在左側填充零。
      for (String s : new String[] {
            "123", "12", "1", "1234579911111", "1234567890"
      }) {
         int len = s.length();
         String n = len >= 10 ? s.substring(0, 10)
               : "0000000000".substring(len, 10) + s;
         System.out.println(n);
      }

以上打印了以下內容:

0000000123
0000000012
0000000001
1234579911
1234567890

整數不能有 10 位數字,請改用long 此外,使用字符串而不是數組來解決問題。

public static void main(String[] args) {
    Scanner cmdScanner = new Scanner(System.in);
    System.out.println("Enter a number");
    long num = cmdScanner.nextLong();
    String input = String.valueOf(num);
    if (input.length() > 10) {
        System.out.println(input.substring(0, 10));
    } else {
        final int zerosToAppend = 10 - input.length();
        final StringBuilder sb = new StringBuilder();
        for (int i = 0; i < zerosToAppend; i++) {
            sb.append("0");
        }
        System.out.println(sb.append(input));
    }
    cmdScanner.close();
}

你可以通過簡單地編寫這個程序來做到:-

import java.util.Arrays;
public class Test
{
    public static void main(String[] args)
    {
        int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int newarray[] = new int[10];
        //If it is smaller than 10
        if(arr.length<10)
        {
            for(int i=0;i<(10-arr.length);i++)
            {                       
                newarray[i] = 0;
            }
            for(int i=(10-arr.length);i<10;i++)
            {
                newarray[i] = arr[i-(10-arr.length)];
            }
        }
        else
        {
            for(int i=0;i<arr.length;i++)
            {               
                newarray[i] = arr[i];
            }
        }
        System.out.println(Arrays.toString(newarray));
    }
}

希望這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM