Question

Je dois faire un tableau de 100 numéros, puis mélanger au hasard les 20 premiers à avoir 2 tableaux différents; A et B.

Pour cette mission, je dois vérifier wether les 20 premiers numéros de tableau A sont un sous-ensemble des 20 premiers numéros af Tableau B

Jusqu'à présent, j'ai ceci:

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;
    }
   }

  } 
 }


}

Cependant, cela ne fonctionne pas du tout parce que je ne peux pas comprendre comment comparer le elementen [i] de l'objet A à l'élément [j] de l'objet B. Comment puis-je comparer les différents éléments des deux objets en utilisant la méthode statique dans la même classe.

(donc Verzameling A et B sont les deux instances de la classe Verzameling, avec une méthode statique pour vérifier si A est sous-ensemble de B. Comment puis-je obtenir les chiffres dans le tableau de Verzameling A et B?)

Si quelque chose n'est pas clair s'il vous plaît laissez-moi savoir! Je ne ai pas besoin des solutions entières, comment je peux accéder à la valeur de elementen [i] de l'objet A et B. merci!

EDIT:

est la ligne de problème:

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

Merci pour le commentaire, mais il est erroring encore quand je compile. Il dit qu'il ne peut pas trouver le symbole sur les verzameling.a.elementen, i, j et verzameling.b.elementen. Je pense que je nomme mal, est-il correct d'appeler la variable en disant: classname.objectname.variable d'objet?

Était-ce utile?

La solution

votre instruction if est pillée:

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

vous faites affectation, vous n'êtes pas tout tester.

essayer

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

ou

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

Notez que vous devez vous assurer Verzameling.a.elementen [i] est non nulle si vous utilisez la méthode equals. A noter également que pour les nombres == est ok, mais pour les objets que vous souhaitez utiliser est égal à moins que vous êtes sûr que vous voulez == (== moyen quelque chose de très spécifique pour les objets)

préédition -

Votre code ne compile pour quelques raisons. La première est que vos variables a et b sont déclarés dans le champ d'application principal, donc ils ne sont accessibles que dans le principal. les déplacer jusqu'à la classe et de les rendre publics des moyens et statiques peuvent être accessibles à partir de n'importe où.

EDIT - Je ne peux pas croire Im faire les devoirs de quelqu'un, mais - cela ne fonctionne pas, mais au moins il compile

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;
    }


}

Autres conseils

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

est assignant, non COMPAING. Je suppose que vous voulez ==, mais une option evenbetter plût à remplacer les égaux ()

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

ou

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

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

devrait être:

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

Trier chacun des tableaux, comparer. Ou mieux encore, mettre les entiers dans un type de jeu, et vérifier si l'on est un sous-ensemble de l'autre. Consulter l'ensemble d'interface, utilisez la méthode containsAll ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top