例如我有这个数组
int[] array = new int[size];
我希望用2来填充30%的数组,并根据其大小再填充70%的8。我怎么能这样做。
编辑:附加一定百分比的数字可以超过2个。
答案 0 :(得分:2)
如果您有两个以上的百分比计数,则将其存储在一个数组中,同时将要填充的值存储在一个单独的数组中,然后您可以应用以下逻辑。
public class MyClass {
public static void main(String args[]) {
int p[] = new int[3];
p[0] = 10;//%
p[1] = 20;//%
p[2] = 70;//%
int value[] = new int[3];
value[0] = 1;//fill 1 to first 10%
value[1] = 2;//fill 2 to first 20%
value[2] = 3;//fill 3 to first 70%
int size = 100;
int a[] = new int[size];
int count = 0;
for(int i=0;i<3;i++){
for(int j=0;j<(size*p[i])/100;j++){
a[count] = value[i];
++count;
}
}
for(int i=0;i<size;i++){
System.out.println(a[i]);
}
}
}
此处p
是百分比数组,value
是值数组,它指定要在最终数组的相应百分比部分填充的值。上面代码的输出将是10个元素,值为1,20个元素值为2,其余值为3。
在这里,我获得了3个百分比值,您可以用n
替换三个并填充数组。希望这会有所帮助。
答案 1 :(得分:1)
例如,您可以使用两个循环:
int size = 10;
int[] array = new int[size];
int percent30 = (int) (size * 0.3);
for (int i = 0; i < percent30; i++) {
array[i] = 2;
}
for (int i = percent30; i < size; i++) {
array[i] = 8;
}
如果大小为10,则结果为
[2, 2, 2, 8, 8, 8, 8, 8, 8, 8]
------- -------------------
30% 70%
是否可以使用2个以上的数字进行此操作?我的意思是 可以有3个或更多的数字及其百分比。 那么如何填充数组呢?
在这种情况下,我想创建一个方法来填充我的数组,例如:
public static int[] fillArray(int[] array, int startIndex, int endIndex, int number) {
for (int i = startIndex; i < endIndex; i++) {
array[i] = number;
}
return array;
}
然后你可以使用不同的值多次,例如:
array = fillArray(array, 0, (int) (size * 0.3), 2);
array = fillArray(array,(int) (size * 0.3), (int) (size * 0.5) , 8);
array = fillArray(array,(int) (size * 0.5), size , 10);
或者您可以创建一个包含此信息的类:
class Information {
int startIndex;
int endIndex;
int number;
public Information(int startIndex, int endIndex, int number) {
this.startIndex = startIndex;
this.endIndex = endIndex;
this.number = number;
}
}
然后你可以使用:
//Fill the information in an array
Information[] information = {
new Information(0, (int) (size * 0.3), 2),
new Information((int) (size * 0.3), (int) (size * 0.5), 8),
new Information((int) (size * 0.5), size, 10)
};
//then loop over this info and fill the array
for (Information info : information) {
array = fillArray(array, info);
}
您的方法也可以更改:
public static int[] fillArray(int[] array, Information into) {
for (int i = into.startIndex; i < into.endIndex; i++) {
array[i] = into.number;
}
return array;
}
我发现Arrays
已经有一个方法Arrays.fill,其中包含:
public static void fill(int[] a, int fromIndex, int toIndex, int val)
在这种情况下,您可以使用:
for (Information info : information) {
Arrays.fill(array, info.startIndex, info.endIndex, info.number);
}
答案 2 :(得分:1)
只需计算百分比并填充数组。
示例:
int[] array = new int[size];
int percent1 = Math.floor(size*0.3); //percentage of 2
for(int i =0; i < percent1; i++){
arr[i] = 2;
}
for(int i =percent1; i < size; i++){
arr[i] = 2;
}