Java 根据数组中已存储的整数检查整数变量
免责声明:对代码仍然很陌生,只掌握java的基本技能。试着在自己和别人身上尽可能多地学习。目前没有在大学学习 大家好 我试图创建一个小容量(5个整数)的数组,以便在每个数组元素中存储随机生成的整数。随机生成的整数在设定的范围(0-75)内,我对此没有问题Java 根据数组中已存储的整数检查整数变量,java,arrays,Java,Arrays,免责声明:对代码仍然很陌生,只掌握java的基本技能。试着在自己和别人身上尽可能多地学习。目前没有在大学学习 大家好 我试图创建一个小容量(5个整数)的数组,以便在每个数组元素中存储随机生成的整数。随机生成的整数在设定的范围(0-75)内,我对此没有问题 我不知道如何生成一个新的整数,然后在存储它并继续下一个之前,对照每个数组元素中当前存在的整数检查它 我尝试的是: public class ItemSet { public static void main(String []args) {
我不知道如何生成一个新的整数,然后在存储它并继续下一个之前,对照每个数组元素中当前存在的整数检查它 我尝试的是:
public class ItemSet
{
public static void main(String []args)
{
int[] itemSet;
itemSet = new int[5];
itemSet[0] = 0; /* to initialise the array elements. Im not sure if i actually have to do this or not */
itemSet[1] = 0;
itemSet[2] = 0;
itemSet[3] = 0;
itemSet[4] = 0;
int count = 1;
int assignItem = 0;
int countTwo = 1;
while (count > 5) {
while (countTwo == 1) {
assignItem = (int)(Math.random()*76);
// here is where i get totally lost
if (assignItem.compareTo(itemSet)) {
countTwo = 1;
} else {
itemSet[(count--)] = assignItem;
countTwo = 0;
}
}
count = count++;
}
}
}
我看了这么久,我的头开始痛了。如果您能给我任何建议,我将不胜感激。:)先谢谢你。xx
编辑:在任何“如何测试数组是否包含特定值”类型的问题中都找不到我需要的解决方案,因为如果数字恰好与先前生成的另一个整数相同,我需要在将其自身存储到数组元素之前使其再次随机化。你做的太多了,不能只填充一个数组。要填充数组,请尝试使用“for”循环,如下所示:
public class ItemSet {
public static void main(String []args) {
int[] itemSet;
itemSet = new int[5];
int count = 1;
int assignItem = 0;
int countTwo = 1;
for (int i = 0; i < itemSet.length; i++) {
itemSet[i] = (int) (Math.random() * 76);
}
}
}
要在存储下一个整数之前检查这些值,(比如确保新存储的值是唯一的),可以使用一个嵌套的for循环,该循环从外部循环下面的值开始,并向后移动,将之前的每个值与刚存储的值进行比较,如果它们相同,它将减少外部计数器,然后覆盖下一个循环中的数据:
import java.util.Arrays; // you need this to use Arrays.toString()
public class ItemSet {
public static void main(String []args) {
int[] itemSet;
itemSet = new int[5];
int count = 1;
int assignItem = 0;
int countTwo = 1;
for (int i = 0; i < itemSet.length; i++) {
itemSet[i] = (int) (Math.random() * 76);
for (int j = i - 1; j >= 0; j--) {
if (itemSet[j] == itemSet[i]) {
System.out.println("Comparing " + itemSet[j] +
" and " + itemSet[i]);
i--;
break; // not really needed but illustrates a way to exit a loop immediately
}
}
}
// this is a handy way to print all the data in an array quickly
System.out.println(Arrays.toString(itemSet));
}
}
import java.util.Arrays;//使用Arrays.toString()时需要这个
公共类项目集{
公共静态void main(字符串[]args){
int[]项目集;
itemSet=newint[5];
整数计数=1;
int assignItem=0;
int countTwo=1;
for(int i=0;i=0;j--){
if(itemSet[j]==itemSet[i]){
System.out.println(“比较”+项目集[j]+
“和”+项目集[i]);
我--;
break;//实际上不需要,但说明了立即退出循环的方法
}
}
}
//这是一种快速打印阵列中所有数据的简便方法
System.out.println(Arrays.toString(itemSet));
}
}
公共静态void main(字符串[]args){
//不需要用零初始化数组
int[]项目集=新的int[5];
int计数器=0;
while(计数器
解决此问题的方法有很多,我建议您使用一种帮助方法来查找阵列中的重复项。这将是一个有效的例子:
public static void main(String[] args) {
int[] itemSet;
itemSet = new int[5];
int assignItem;
for (int i = 0; i < 5; i++) {
assignItem = (int)(Math.random()*76);
if(!duplicate(assignItem,itemSet,i)){
itemSet[i] = assignItem;
}
}
}
private static boolean duplicate(int assignItem, int[] itemSet, int i) {
for (int j = 0; j < i; j++) {
if (assignItem == itemSet[j])
return true;
}
return false;
}
publicstaticvoidmain(字符串[]args){
int[]项目集;
itemSet=newint[5];
国际转让项目;
对于(int i=0;i<5;i++){
assignItem=(int)(Math.random()*76);
如果(!重复(assignItem,itemSet,i)){
itemSet[i]=分配项目;
}
}
}
私有静态布尔复制(int assignItem,int[]itemSet,int i){
对于(int j=0;j
我很难理解你的要求,但我还是会试试看,希望这就是你想要的:
for (int count = 0; count < 5 ; count++) {
assignItem = (int)(Math.random()*76);
if (assignItem==itemSet[count]&&itemSet[count]!=0) {
//If true do this
}
else {
itemSet[count] = assignItem;
}
}
for(int count=0;count<5;count++){
assignItem=(int)(Math.random()*76);
if(assignItem==itemSet[count]&&itemSet[count]!=0){
//如果是真的,请这样做
}
否则{
itemSet[计数]=分配项目;
}
}
检查生成的数字是否等于某个位置,如果该位置为空(0),如果不等于(新的数字),则将为数组赋值。最直接的方法是在插入当前随机值之前通过数组检查现有值
public static void main(String[] args){
int idx = 0;
int[] myArray = new int[5];
Random rnd = new Random();
int val = rnd.nextInt(76);
do{
if(numExistInArray(val, myArray))
val = rnd.nextInt(76); //if val exist in array, generate another number
else
myArray[idx++] = val; //if val not exist in array, fill array
}while(idx != myArray.length); //do not exit loop till all numbers are filled
}
public static boolean numExistInArray(int val, int[] array){
for(int x=0; x<array.length; x++)
if(array[x] == val)
return true;
return false;
}
publicstaticvoidmain(字符串[]args){
int-idx=0;
int[]myArray=新的int[5];
随机rnd=新随机();
int val=rnd.nextInt(76);
做{
if(numExistInArray(val,myArray))
val=rnd.nextInt(76);//如果数组中存在val,则生成另一个数字
其他的
myArray[idx++]=val;//如果数组中不存在val,则填充数组
}while(idx!=myArray.length);//在填充所有数字之前不要退出循环
}
公共静态布尔numExistInArray(int-val,int[]数组){
对于(int x=0;x如果您知道您的设置范围(0-75),并且空间不是问题,我建议维护一个未使用的整数池。这将保证每个值都是唯一的,并避免迭代整数数组以检查重复:
public static void main(String[] args) {
List<Integer> unusedNumbers = new ArrayList();
// Populate list with values
for (int i = 0; i <= 75; i++) unusedNumbers.add(i);
int[] itemSet = new int[5];
for (int i = 0; i < 5; i++) {
int randomIndex = (int) (Math.random() * unusedNumbers.size());
int randomInt = unusedNumbers.remove(randomIndex);
itemSet[i] = randomInt;
}
}
publicstaticvoidmain(字符串[]args){
List unusedNumbers=new ArrayList();
//用值填充列表
对于(int i=0;i“对照每个数组元素中当前存在的整数检查它”检查它的原因是什么?“我不确定我是否真的必须这样做”不需要。根据规范,数组元素被初始化为类型的默认值,int
的默认值为零。简而言之,您不想存储重复的元素。对吗?编辑的可能重复,以尝试解释它与该问题的不同。是的,我需要检查元素以确保
public static void main(String[] args){
int idx = 0;
int[] myArray = new int[5];
Random rnd = new Random();
int val = rnd.nextInt(76);
do{
if(numExistInArray(val, myArray))
val = rnd.nextInt(76); //if val exist in array, generate another number
else
myArray[idx++] = val; //if val not exist in array, fill array
}while(idx != myArray.length); //do not exit loop till all numbers are filled
}
public static boolean numExistInArray(int val, int[] array){
for(int x=0; x<array.length; x++)
if(array[x] == val)
return true;
return false;
}
public static void main(String[] args) {
List<Integer> unusedNumbers = new ArrayList();
// Populate list with values
for (int i = 0; i <= 75; i++) unusedNumbers.add(i);
int[] itemSet = new int[5];
for (int i = 0; i < 5; i++) {
int randomIndex = (int) (Math.random() * unusedNumbers.size());
int randomInt = unusedNumbers.remove(randomIndex);
itemSet[i] = randomInt;
}
}