gpt4 book ai didi

java - 检查数组是否是其他数组的子集。 java

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:55 24 4
gpt4 key购买 nike

我必须制作一个包含 100 个数字的数组,然后随机打乱前 20 个数字,得到 2 个不同的数组; A和B。

对于这个作业,我必须检查数组 A 的前 20 个数字是否是数组 B 的前 20 个数字的子集

到目前为止我有这个:

import java.util.Random;

public class opgave6 {
public static void main(String[] args){

Verzameling a = new Verzameling(20, 3);
Verzameling b = new Verzameling(20, 4);

System.out.println(Verzameling.deelverzamelingVan());
}
}



class Verzameling {
int[] elementen;
int elementen2;
static int aantal2;

Verzameling(int aantal , int seed) {
elementen = new int[100];
int aantal2 = aantal;

for(int i = 0; i < 100; i++){
elementen[i] = i;
}

Random random1 = new Random(seed);

for(int i = 0; i < 100; i++){
int r = random1.nextInt(100);
int temp;
temp = elementen[i];
elementen[i] = elementen[r];
elementen[r] = temp;
}

printVerzameling(aantal);


}

Verzameling(int seed) {

}

void printVerzameling(int aantal){
for (int i = 0; i < aantal; i++){
System.out.print(elementen[i] + " ");
}
System.out.println();
}

static boolean deelverzamelingVan() {
while (true) {
for(i = 0; i < aantal2; i++){
for(j = 0; j < aantal2; j++){
if(Verzameling.a.elementen[i] = Verzameling.b.elementen[j])
break;
}
}

}
}


}

但是,它根本不起作用,因为我不知道如何比较对象 A 的 elementen[i] 和对象 B 的 element[j]。如何使用静态方法比较两个对象的不同元素在同一个类(class)。

(所以 Verzameling A 和 B 都是 Verzameling 类的实例,有一个静态方法来检查 A 是否是 B 的子集。我如何从 Verzameling A 和 B 获取数组中的数字?)

如果有什么不清楚的请告诉我!我不需要完整的解决方案,只需要如何从对象 A 和 B 访问 elementen[i] 的值。谢谢!

编辑:

这是问题所在:

if(Verzameling.a.elementen[i] == Verzameling.b.elementen[j])

感谢您的评论,但是我编译时仍然出错。它说找不到关于 verzameling.a.elementen、i、verzameling.b.elementen 和 j 的符号。我想我命名错误,可以通过说:类名.对象名.对象变量来调用变量吗?

最佳答案

你的 if 语句被顶起:

if(Verzameling.a.elementen[i] = Verzameling.b.elementen[j])

你正在做作业,你没有测试任何东西。

尝试

Verzameling.a.elementen[i].equals(Verzameling.b.elementen[j])

Verzameling.a.elementen[i] == Verzameling.b.elementen[j]

请注意,如果您使用 equals 方法,则需要确保 Verzameling.a.elementen[i] 不为空。另请注意,对于数字 == 没问题,但对于要使用 equals 的对象,除非你确定你想要 == (== 意味着对对象非常具体)

预编辑 --

由于某些原因,您的代码未编译。第一个是你的 a 和 b 变量是在 main 的范围内声明的,所以它们只能在 main 中访问。将它们移到类中并使它们公开和静态意味着可以从任何地方访问它们。

编辑——我不敢相信我在做别人的作业,但是——这行不通,但至少它编译了

import java.util.Random;

public class opgave6 {
public static Verzameling a = new Verzameling(20, 3);
public static Verzameling b = new Verzameling(20, 4);

public static void main(String[] args) {
System.out.println("before something");
System.out.println(Verzameling.deelverzamelingVan());
System.out.println("after something");
}
}


class Verzameling {
int[] elementen;
int elementen2;
static int aantal2;

Verzameling(int aantal, int seed) {
elementen = new int[100];
int aantal2 = aantal;

for (int i = 0; i < 100; i++) {
elementen[i] = i;
}

Random random1 = new Random(seed);

for (int i = 0; i < 100; i++) {
int r = random1.nextInt(100);
int temp;
temp = elementen[i];
elementen[i] = elementen[r];
elementen[r] = temp;
}

printVerzameling(aantal);
}

// you arent using it -- do so or delete it
Verzameling(int seed) {
}

void printVerzameling(int aantal) {
for (int i = 0; i < aantal; i++) {
System.out.print(elementen[i] + " ");
}
System.out.println();
}

static boolean deelverzamelingVan() {
for (int i = 0; i < aantal2; i++) {
for (int j = 0; j < aantal2; j++) {
int aElementen = opgave6.a.elementen[i];
int bElementen = opgave6.b.elementen[j];
System.out.println(String.format("Comparing a[i] to b[i] [%d, %d]", aElementen, bElementen));
if (aElementen == bElementen)
break;
}
}

// need to return something, i dont know what.
return true;
}


}

关于java - 检查数组是否是其他数组的子集。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com