2017-08-17 1 views
1

Hier ist meine Matrix von Themen .... jetzt will ich Konditionalität zwischen SubjektenMatrix nicht alle Kombinationen einfügen?

 mat  pro  
mat  null null  
pro  null null  

zum Beispiel auf Thema Mathematik i für semester =1 auf Thema Themen Wert programing i semester = 4 so will setzen eingefügt mache ich dies füllen Matrix mit „yes“, nur dann, wenn der semester des ersten Themas größer als Semester auf dem zweite Thema und „no“, wenn nicht ... jetzt Problem, das ich habe, ist, dass ich Konditionalitäten für Kombinationen eingeben:

math - math , which would be "no" 
math - programing , which would be "no" 
programing - programing , which would be "no" 

und dies sieht wie folgt aus, wenn Programm durchgeführt wird:

 mat  pro  
mat  no  no 
pro  no  no 

aber ich nicht diese Kombination haben gefragt Konditionalität zu setzen: programing - Mathe, was „Ja“ wäre und es sollte wohl so aussehen:

 mat  pro  
mat  no  no 
pro  yes  no 

Wie mache ich das? irgendeine Idee?

hier ist mein Code:

public void makeGraph() { 

    matrix = new String[subjects.size()][subjects.size()]; 

    for (int i = 0; i < matrix.length; i++) { 
     for (int j = i; j < matrix.length; j++) { 

      System.out.println("Enter conditionality between subjects: " + subjects.get(i).getName() + ", and " 
        + subjects.get(j).getName()); 

      boolean conditioned = s.nextBoolean(); 

      if (conditioned == true) { 
       if (subjects.get(i).getSemester() > subjects.get(j).getSemester()) { 
        matrix[i][j] = "yes"; 
        matrix[j][i] = "yes"; 
       } else {  
         matrix[i][j] = "no"; 
         matrix[j][i] = "no";  
       } 
      } else { 
       matrix[i][j] = "no"; 
       matrix[j][i] = "no"; 
      } 
     } 
    } 
} 

EDIT: Hier ist der Link Pastebin ich es gelöst habe. Solution

+0

Sie Post war so schlecht geschrieben, bitte anstrengen .. – azro

+0

@azro Es tut mir leid ich das wusste, aber ich konnte nicht Es hat bei mir nicht funktioniert, als ich versuchte, es richtig zu schreiben. –

+0

Wenn meine Lösung geholfen hat, können Sie das bitte akzeptieren, indem Sie auf das graue Häkchen neben meiner Antwort klicken und es grün machen? Außerdem würde ein Klick auf den Pfeil neben meiner Antwort sehr geschätzt werden :) – Assafs

Antwort

1

Das Problem liegt in der Art, wie Sie die Matrix zuweisen. Wenn Programmierung vs Mathematik auf der Skala ist und Sie sich für einen Vergleich entscheiden, weisen Sie [i] [j] den gleichen Wert zu wie [j] [i]. Das ist falsch. Man sollte auf Nein gesetzt werden, und das andere auf Ja, da man fragt, ob Mathe mehr Semester als Programmieren hat und der andere fragt, ob Programmieren mehr Semester als Mathe hat. Da Sie nach größeren und nicht nach größeren Gleichen suchen, bedeutet eine dieser Fragen "ja", dass die andere "nein" ist.

+0

check out "EDIT" Ich habe es gelöst –

1

Ich habe es gelöst Sie den Code überprüfen können:

public void makeGraph() { 

    matrix = new String[subjects.size()][subjects.size()]; 

    for (int i = 0; i < matrix.length; i++) { 
     for (int j = i; j < matrix.length; j++) { 

      boolean conditioned; 

      if(subjects.get(i).getName().equalsIgnoreCase(subjects.get(j).getName())){ 
       conditioned=false; 
      }else{ 
       System.out.println("Enter conditionality between subjects: " + subjects.get(i).getName() + ", and " 
         + subjects.get(j).getName()); 
       conditioned = s.nextBoolean(); 
      } 

      if (conditioned == true) { 

       if (subjects.get(i).getSemester() > subjects.get(j).getSemester()) { 
        matrix[i][j] = "yes"; 
        matrix[j][i] = "no"; 
       }else if(subjects.get(i).getSemester()<subjects.get(j).getSemester()){ 

        System.out.println("Enter conditionality between subjects: " + subjects.get(j).getName() + ", and " 
          + subjects.get(i).getName()); 
        conditioned = s.nextBoolean(); 
        matrix[i][j] = "no"; 
        matrix[j][i] = "yes"; 
       }else{ 
        matrix[i][j] = "no"; 
        matrix[j][i] = "no";  
       } 
      } else { 
       matrix[i][j] = "no"; 
      } 
     } 
    } 
} 
Verwandte Themen