[英]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
。
Math.log10()
。%010d
的printf
說明符,它允許 10 位數字的字段,在左側用 0 填充。 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
如果您將值作為字符串讀取,那么您只需執行以下操作。
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.