Frage

I eine Matrix von 100 Zahlen machen und dann die ersten 20 mischte zufällig 2 verschiedene Anordnungen zu haben; A und B.

Für diese Aufgabe ich, ob die ersten 20 Nummern überprüfen von Array A ist eine Untergruppe der ersten 20 Zahlen af ??Array B

Bis jetzt habe ich diese:

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

  } 
 }


}

Allerdings spielt es keine überhaupt Arbeit, weil ich nicht herausfinden kann, wie man die elemente vergleichen [i] von Objekt A zum Elemente [j] von dem Objekt B. Wie kann ich die verschiedene Elemente aus beiden Objekten mithilfe der statischen Methode vergleichen in der gleichen Klasse.

(So Verzameling A und B sind beide Instanzen der Verzameling Klasse mit einer statischen Methode zu überprüfen, ob eine Teilmenge von B ist, wie kann ich die Zahlen in der Anordnung von Verzameling A und B erhalten?)

Wenn etwas nicht klar ist, lass es mich wissen! Ich brauche nicht ganze Lösungen, nur, wie ich den Wert von elementen zugreifen kann [i] von Objekt A und B. Dank!

EDIT:

das ist das Problem Zeile:

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

danke für den Kommentar, aber es wird erroring noch, wenn ich kompilieren. Er sagt es nicht Symbol über verzameling.a.elementen finden, i, j und verzameling.b.elementen. Ich glaube, ich bin es falsch zu nennen, ist es in Ordnung, um die Variable zu rufen, indem er sagt: classname.objectname.variable des Objekts?

War es hilfreich?

Lösung

Ihre if-Anweisung wird aufgebockt:

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

Sie tun Zuordnung, Sie sind nicht alles testen.

Versuch

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

oder

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

Beachten Sie, dass Sie sicher, dass Verzameling.a.elementen machen müssen [i] ist nicht null, wenn Sie die Methode equals verwenden. Beachten Sie auch, dass für Zahlen == ist in Ordnung, aber für Objekte, die Sie verwenden möchten, ist gleich, es sei denn Sie sind sicher, dass Sie == (== Mittel, um etwas sehr spezifisch für Objekte)

PREEDIT -

Ihr Code kompiliert nicht für ein paar Gründe. Die erste davon ist, dass Ihr a und b Variablen im Rahmen der Haupt deklariert ist, so dass sie nur zugänglich in Haupt sind. Verschieben in der Klasse und sie öffentlich und statische Mittel machen können sie von überall zugegriffen werden.

EDIT - ich kann nicht glauben, Im jemand Hausarbeit zu tun, aber - das ist nicht funktioniert, aber zumindest ist es compiliert

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


}

Andere Tipps

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

ist die Zuordnung nicht compaing. Ich nehme an, Sie wollen ==, sondern eine evenbetter Option würde die Gleichen außer Kraft zu setzen ()

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

oder

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

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

sollte:

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

Sortieren jedes der Arrays, vergleichen. Oder noch besser, setzen die ganzen Zahlen in einen Satz Typ und prüfen, ob man eine Teilmenge der anderen ist. Suchen Sie die Set-Schnittstelle verwenden, um den containsAll () -Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top