Java – die besten Beiträge

Java - Komponenten aus einem Graph berechnen / Algorithmus?

Hallo, ich arbeite gerade an einem Graphenprogramm und der nächste Schritt ist es ,mir die Zusammenhangskomponenten des Graphes auslesen zu lassen.

Eine dafür notwendige Wegmatrix habe ich schon programmiert:

public void berechneKomponenten()
    {
        
        for (int i = 0; i < Matrix.length; i++)
        {
            for(int j = 0; j < Matrix[i].length; j++)
            {
                if(WegMatrix[i][j] == 1)
                {
                    int buchstabe_int = i+65;
                    char buchstabe_char = (char) buchstabe_int;
                    
                    System.out.print(buchstabe_char + ",");
                }                        
            }        
        }
    }

Die Ausgabe sieht so aus:

A, A, A, B, B, C, C, C, D, D, D, E, E

--------------------------------------------------------

Und das ist im Prinzip auch richtig, denn:

Die Buchstaben (A-E) habe ich zum Verständnis hinzugefügt.
-------------------------------------------------------------------------------------

Meine Wegmatrix hat:

  • 3 A's
  • 2 B's
  • 3 C's
  • 3 D's
  • 2 E's

Verglichen mit meiner Ausgabe:

A, A, A => 3 A's
B, B => 2 B's
C, C, C => 3 C's
D, D, D = > 3 D's
E, E => 2 E's

-----------------------------------

Doch die Ausgabe sollte so aussehen: (Siehe K1 und K2)

bzw so:

Wie schaffe ich das?

Danke!

Bild zum Beitrag
Computer, programmieren, Java, Informatik

Java - Distanzmatrix Algorithmus, Wie ansetzen?

Hallo, ich bin gerade dabei ein Graphenprogramm zu schreiben und stecke bisschen bei der Distanzmatrix.

Ich weiß nicht ob sich jemand bei Graphentheorie auskennt oder nicht aber der Algorithmus für die Distanzmatrix ist relativ einfach. Nur das umsetzen in Code fällt mir sehr schwer und deswegen hoffe ich, dass ihr mir vielleicht dabei helfen könnt..

Der Algorithmus für eine Distanzmatrix lautet so:

Man hat eine Eingangsmatrix (Adjazentmatrix).
Die könnte so aussehen:

Man markiert sich alle Nuller die in der Adjazentmatrix vorkommen (AUßER DIE HAUPTDIAGONALE, DIE BLEIBT UNBERÜHRT).

Dann erstellt man sich eine eigene Matrix die man "DistanzMatrix" nennen kann und setzt alle Nuller die eben in der Adjazentmatrix vorkommen auf "Unendlich" oder auch auf INTEGER.MAX_VALUE in der Programmiersprache .

Das schaut dann so aus:

Also haben wir jetzt 2 Matrizen. Bis dahin habe ich es auch geschafft in meinem Programm. Die Ausgabe schaut bei mir so aus:

Die "-9" sind alle Nuller, die auf UNENDLICH gesetzt sind (siehe zweites Bild).

Der nächste Schritt ist es die Potenzen der Eingangsmatrix (Adjazentmatrix) zu berechnen. Das habe ich ebenfalls schon geschafft im Code.

Das heißt, die Adjazentmatrix (siehe Bild 1) wurde potenziert und so könnte das Ergebnis der Potenzberechnug aussehen.

Man schaut sich jetzt alle Nuller (außer die Hauptdiagonale von der Eingangsmatrix an (siehe Bild 1)) und markiert sich nur die Zahlen (rot), die sich von der Potenzierung der Eingangsmatrix verändert haben. (Außer die Nuller (=Neue Nuller die durch die Potenzierung entstanden sind bleiben auch weiterhin eine Null))

Und der letzte Schritt ist es jetzt, die von mir erstellte DistanzMatrix upzudaten, indem ich im ersten Schritt alle rote Zahlen von A²(G) in 2 umwandle. Alle Nuller die übrig bleiben, werden wieder in UNENDLICH umgewandelt.

Und das wird jetzt so oft wiederholt, bis es keine UNENDLICH Zeichen mehr in der Distanzmatrix gibt. Und aus UNENDLICH wird 3. Und immer so weiter.. Falls es zb nach der fünften Potenzierung immer noch Nuller bzw UNENDLICH Werte gibt dann wird aus UNENDLICH 5.

Somit ist D³(G) das Ergebnis.

Ich hoffe ich konnte es ausführlich genug erklären

Danke

Bild zum Beitrag
Computer, Schule, Technik, programmieren, Java, Informatik, Technologie, Algorithmus, Graphentheorie

Java Switch Case im Falle, dass alle "case"s falsch sind?

Ich habe ein paar if-else-Ausdrücke, die ich gut durch switch ersetzen könnte, jedoch möchte ich auch ein else-Statement behalten, d.h. wenn alle Bedingungen vorher unwahr sind - (wie) geht das?

String test = "2";
if (test.charAt(0) == 'a') {
 System.out.println("1");
} else if (test.charAt(0) == 'b'){
 System.out.println("2");
} else if (test.charAt(0) == 'c'){
 System.out.println("3");
} else if (test.charAt(0) == 'd'){
 System.out.println("4");
} else if (test.charAt(0) == 'e'){
 System.out.println("5");
} else {
 System.out.println("Nicht vorhanden"); 
}


String test = "2";
switch(test.charAt(0)){
  case 'a': System.out.println("1"); break; // if bzw. if else
  case 'b': System.out.println("2"); break; // if bzw. if else
  case 'c': System.out.println("3"); break; // if bzw. if else
  case 'd': System.out.println("4"); break; // if bzw. if else
  case 'e': System.out.println("5"); break; // if bzw. if else
  case test.charAt(0): System.out.println("Nicht vorhanden"); break; //else-Äquivalent
}

doch dann, selbst wenn ich test.charAt(0) in eine Variable extrahiere, erhalte ich:

"case expressions must be a constant statement".

Und das macht natürlich auch Sinn, dennoch wollte ich fragen, ob es eine Möglichkeit gibt, mit Switch-Cases eine Möglichkeit zu haben, wenn kein Fall korrekt ist. Und damit meine ich nicht, eine boolische Variable einzuführen, die dann in allen cases verändert wird.

Computer, programmieren, Java

Ist man mit 26 zu alt, um Programmieren zu lernen?

Also , ich würde gerne etwas neues in meinem Leben lernen und würde gerne meine aktuelle Arbeit am liebsten sofort kündigen, da die Arbeit eigentlich nix für mich ist (; leider habe ich viel zu viel auf meine Eltern gehört und dass gelernt, wo ich mich absolut nicht sehe (;

Leider habe ich etwas sorgen, dass ich mit 26 Jahren etwas zu alt dafür bin , denn viele fangen schon irgendwie mit 13-14 Jahren an und ich habe bis jetzt 0 Ahnung von Programmierung ...

deswegen habe ich paar Fragen :

  1. Ist man mit 26 Jahren zu alt um das Programmieren zu lernen ?
  2. Wenn nein, mit welcher Programmiersprache sollte ich anfangen (hier ein paar Punkte was für mich wichtig ist !
  • Die Sprache sollte aktuell und relativ einfach für Anfänger sein !
  • Würde gerne als Freelancer arbeiten und deswegen sollte es eine Sprache sein mit der ich leichter an Aufträge kommen kann und ca 1500 Euro verdienen kann (damit ich meinen Job kündigen kann , um noch mehr Zeit für das Programmieren zu haben ) Learning by Doing .
  • Und die Sprache sollte multifunktionsfähig sein und auf Windows laufen

Hier ein paar Gedanken die ich mir gemacht habe

  • Mit Webdesign anfangen also HTML / CSS lernen und die Programmiersprache Javascript und damit ( wenn ich es gelernt habe kann ich dann als Freelancer arbeiten oder ? )
  • und als nächstes dann Python lernen, da die Sprache relativ einfach ist , die Sprache ist auch multifunktionsfähig und läuft auch auf Windows und damit kann man dann viele Projekte starten und viele andere Sprache haben eine Ähnlichkeit, also könnte man auch , dann die anderen Sprachen später lernen, wenn man die Sprache gut beherrscht oder ?

3. Wie stehen eigentlich meine Chancen in der IT Branche ohne Studium/Ausbildung in dem Bereich, kann man es sich alles selbst beibringen und erfolgreich in dem Bereich werden , ohne jetzt extra Studiert oder Ausbildung gemacht zu haben ?

Kann ich z.b Webprogrammiurung in einem Jahr lernen und damit dann nach 1 Jahr ca 1500 Euro damit verdienen um meinen Job zu kündigen und damit dann mich finanzieren und es dann hauptberuflich machen ?

und die letzte frage was hat es eigentlich mit dem "Hallo Welt " aufsich? Warum fangen Anfänger damit an ?

Vielen Dank !!!

Computerspiele, Software, Hardware, Webseite, programmieren, Java, Antivirus, Code, Computersprache, Informatik, It-Branche, IT-Sicherheit, IT-Spezialist, künstliche Intelligenz, web-entwickler, Windows 10, Ausbildung und Studium

Meistgelesene Beiträge zum Thema Java