用java写一个随机一个长度为20的数组,输出里面的值相加等于10的数字,不能出现重复元素数组例: int a=[2,4,6,8,9,0,1,10,3,5,7,3,6,3,2,7,1,2,5,7,3,4,2,4,2];
时间: 2023-09-16 09:05:57 浏览: 120
java代码-定义一个一维数组,求出数组的最大值,最小值,平均值
### 回答1:
public class Test {
public static void main(String[] args) {
int[] arr = new int[20];
Random random = new Random();
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int num = random.nextInt(10);
arr[i] = num;
sum += num;
if (sum == 10) {
break;
}
}
System.out.println("数组元素:");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
### 回答2:
首先,定义一个长度为20的数组a。
使用Random类生成随机数,并将生成的随机数赋值给数组a的每个元素。
在计算数组a中元素相加是否等于10时,需要遍历数组a,依次判断相邻三个元素的和是否等于10。
如果相加等于10,则输出该数字,并将其从数组中删除,以避免重复输出。
最后,再次输出修改后的数组a。
以下为示例代码:
```java
import java.util.ArrayList;
import java.util.Random;
public class RandomArray {
public static void main(String[] args) {
int[] a = new int[20];
Random random = new Random();
// 生成随机数组a
for (int i = 0; i < a.length; i++) {
a[i] = random.nextInt(10);
}
System.out.println("生成的随机数组a:" + Arrays.toString(a));
// 计算数组a中元素相加是否等于10
ArrayList<Integer> result = new ArrayList<>();
for (int i = 0; i <= a.length - 3; i++) {
int sum = a[i] + a[i + 1] + a[i + 2];
if (sum == 10 && !result.contains(a[i]) && !result.contains(a[i + 1]) && !result.contains(a[i + 2])) {
result.add(a[i]);
result.add(a[i + 1]);
result.add(a[i + 2]);
System.out.println("相加等于10的数字:" + a[i] + ", " + a[i + 1] + ", " + a[i + 2]);
}
}
}
}
```
以上代码会生成一个长度为20的随机数组a,并输出数组a中相加等于10的数字。注意,在数组a中可能会有多组不重复的数字相加等于10的情况,以上代码只输出满足条件的第一组数字。如果需要输出所有满足条件的数字组合,可以将result修改为List<List<Integer>>类型,并将满足条件的数字组合添加到result列表中。
### 回答3:
首先,我们可以使用Java的随机数函数`random()`生成一个长度为20的随机数组,然后使用循环逐个计算数组元素的和,找出和为10的数字。
具体步骤如下:
1. 创建一个长度为20的整型数组`arr`。
2. 使用循环遍历数组的每个位置,将随机生成的整数赋值给数组元素。可以使用`Math.random()`生成一个0到10之间的随机数,然后使用`(int)`将其转换为整数。
3. 定义一个变量`sum`,用于记录数组元素的和。
4. 再次使用循环遍历数组的每个位置,将数组元素的值加到`sum`上。
5. 在遍历过程中,每次判断`sum`是否等于10,如果相等,则打印当前的数组。
6. 由于要避免重复元素,可以使用`Set`集合存储已经出现的数组,每次生成新的数组时,判断当前数组是否已经存在于`Set`中,如果存在,则重新生成新的数组。
7. 继续进行循环,直到找到所有满足条件的数组为止。
下面是示例代码:
```java
import java.util.HashSet;
import java.util.Set;
public class RandomArray {
public static void main(String[] args) {
Set<String> uniqueArrays = new HashSet<>();
while (uniqueArrays.size() < 300) {
int[] arr = new int[20];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 11);
}
int sum = 0;
for (int num : arr) {
sum += num;
}
if (sum == 10) {
StringBuilder sb = new StringBuilder();
for (int num : arr) {
sb.append(num).append(" ");
}
uniqueArrays.add(sb.toString());
}
}
for (String array : uniqueArrays) {
System.out.println(array);
}
}
}
```
注意,该代码中使用了一个`Set<String>`集合来存储已经出现的数组,以避免重复。最终,我们将所有满足条件的数组逐行打印出来。
阅读全文