Mach die j = i + 1 Optimierung raus und lass die Schleife auch bei 0 starten, dann klappt's wie gewünscht.
Die sorgt nämlich - was falsch ist - dafür, dass bei späteren Zahlen die vorherigen nicht mehr geprüft werden.
(Natürlich muss im if dann auch noch eine i != j Bedingung stehen, damit die Zahl sich nicht selbst als Duplikat findet)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

size_t copy_duplicates(int dst[], const int src[], size_t len) {
    size_t n = 0;
    
    for(size_t i = 0; i < len; i++) {
      int is_duplicate = 0;
      for (size_t j = 0; j < len; j++) {
        if(src[i] == src[j] && i != j) {
          is_duplicate = 1;
          break;
        }
      }

      if (is_duplicate) {
        dst[n] = src[i];
        n++;
      }
    }
    
    return n;
}

int main (void) {
    int src[] = {5, 3, 5, 4, 4, 5};
    int len = 6;
    int dst[6];
    
    size_t num_duplicates = copy_duplicates(dst, src, len);
    
    printf("%zu\n", num_duplicates);
    
    for (size_t i = 0; i < num_duplicates; i++) {
      printf("%d ", dst[i]);
    }
    
    return EXIT_SUCCESS;
}
...zur Antwort

Jedes Lebensmittel hat eine eigene Maßeinheit.
Eine Maßeinheit kann bei mehreren Lebensmitteln vorkommen.
Also muss eine n-1 Verbindung von Lebensmittel zu Maßeinheit.
Ansonsten sollte die Maßeinheit mit nichts verbunden sein.

Einfaches Beispiel, damit du's verstehst:
Das Lebensmittel "Ei" hat die Maßeinheit "Stück", das Lebensmittel "Milch" hat die Maßeinheit "ml".

In der Lebensmittelliste brauchst du dann Einträge die eine Kombination aus Lebensmittel und Quantity darstellen. Quantity muss keine extra Tabelle sein, dafür reicht eine Spalte.

500 Milch (-> ml)
3 Ei
...

Ich würde dafür eine Tabelle Listeninhalt machen (wobei ich die Sachen persönlich eher auf englisch benennen würde, aber das ist egal):

ListenID     | LebensmittelID | Quantity
ABCD-1234    | Egg            | 5
ABCD-1234    | Milk           | 500
ASDF-3214    | Bread          | 1
ASDF-3213    | Egg            | 6

In dieser Tabelle steht dann also, in welcher Liste welche Lebensmittel in welcher Menge vorhanden sind. PK ist logischerweise die Kombination aus (ListenID, LebensmittelID), weil es pro Liste pro Lebensmittel einen Eintrag geben kann.

Jedem Lebensmittel würde ich wie du siehst eine ID geben, um es eindeutig zu identifizieren. Sowas anhand der Bezeichnung zu machen ist keine gute Idee, weil was ist, wenn du die App mal Mehrsprachig machen möchtest. Als ID verwendet man normalerweise eine automatisch generierte 128-bit UUID (lässt sich in VARCHAR(36) speichern), in dem Beispiel hier habe ich aber einfach selbst-vergebene IDs wie "Egg" oder "Milk" genommen, kann man natürlich auch machen wenn man nicht viele Daten hat.

Im Klassendiagram musst du die ListenID beim Inhalt natürlich nicht darstellen. Da gibst du der LebensmittelListe einfach eine List<Listeninhalt>, das hast du eh schon richtig.

...zur Antwort
freestyle (eigene Methode)

Aber ich versuche momentan auf das 10-Finger-System umzusteigen, da es denke ich deutlich schneller ist.

Mit rechts-lastigen Wörtern wie "know" oder "pull" habe ich aber noch große Probleme, da meine rechte Hand eine sehr schlechte Feinmotorik hat, da ich sie in der "Freestyle"-Methode ziemlich vernachlässigt hatte.

...zur Antwort

Bei 2 Villagern müssen mindestens 3 Betten direkt von diesen erreichbar sein, sonst paaren sie sich nicht.

Vielleicht war das Tutorial das du gesehen hast nicht für die Java Edition? Kannst du es mal verlinken?

...zur Antwort

Um die Laufzeiteffizienz eines Algorithmus zu bestimmten berechnet man in der Regel dessen Big-O.

Heißt man stellt eine Formel auf, um die Anzahl der benötigten Schritte in Abhängigkeit von der Anzahl der gegebenen Elemente n zu bestimmen.

Siehe:

https://de.m.wikipedia.org/wiki/Landau-Symbole

https://en.m.wikipedia.org/wiki/Big_O_notation

...zur Antwort

2012 - 2015

GommeHD hatte 2015 die höchsten Spielerzahlen jemals, also dass es im deutschen Raum schon 2014 zuende gewesen wäre würde ich definitiv nicht sagen.

Mit dem PvP Update in der 1.9 (Februar 2016) ging die Ära meiner Meinung nach zuende.
Da teilte sich die Community auf in PvP Spieler, die in der 1.8 blieben, und Nicht-PvP-Spieler, welche die neuen Versionen spielten.
Ich denke das hat das Spiel viele Spieler gekostet, einerseits die PvP Spieler, die nun viel weniger Gegner hatten, länger auf eine neue Runde warten mussten, und keine neuen Updates mehr bekamen. Andererseits die Nicht-PvP-Spieler, weil ihre PvP-spielenden Freunde kein Survival mehr mit ihnen spielen wollten.

...zur Antwort
JSFiddle

Zum rumprobieren empfehle ich JSFiddle: https://jsfiddle.net/

Das ist eine Website auf der du direkt mit HTML, CSS & JavaScript programmieren kannst, dafür musst du nichts installieren, einfach nur die Seite öffnen.

  • Wenn du links oben auf "Run" drückst wird dein Code ausgeführt und die Website angezeigt bzw. aktualisiert.
  • Mit Strg + S kannst du dein Projekt speichern und den dabei erzeugten Link später erneut aufrufen oder an Freunde schicken.
  • Wenn du ein "/show" hinter den Link schreibst kannst du die Website im Vollbild-Modus betrachten.
  • Am Ende des erzeugten Links steht außerdem eine Versionsnummer, dadurch kannst du auch ältere Speicherstände deines Projekts wieder öffnen.
  • Außerdem kannst du beliebige JavaScript-Bibliotheken wie JQuery oder ThreeJS verwenden.
Visual Studio Code

Wenn's dann mal etwas professioneller werden soll empfehle ich Visual Studio Code aka. VSCode: https://code.visualstudio.com/

Wenn du deine Website später mal irgendwo hochladen möchtest brauchst du sie in Datei-Form, also als .html-Datei, und zusätzlich dazu vlt. noch .css- und .js-Dateien die du im HTML einbindest.
Größere Webseiten haben außerdem mehrere Unter-Seiten und ein Backend das sich um Login, Routing, Daten-Speicherung usw. kümmert.

VSCode ist ein Programm, mit dem du solche (HTML, CSS, JS, ...) Dateien bearbeiten kannst, einfach gesagt ein Texteditor / Code-Editor. Lässt sich aber mit üblichen Texteditoren wie Nodepad++ nicht vergleichen, ist schon vielmehr eine Lightweight-IDE.

  • Beispielsweise kann man mehrere Dateien auf einmal bearbeiten und hat links eine Übersicht des Projekts, wo man natürlich auch direkt neue Dateien und Ordner erstellen kann.
  • Du kannst eine Unmenge an 3rd-Party-Erweiterungen installieren, um VSCode um neue Funktionalitäten zu erweitern, beispielsweise Support für andere Programmiersprachen (was du beim Backend brauchen wirst).
  • VSCode hat automatische Code-Vervollständigung bzw. Code-Vorschläge, finde ich auch verdammt nützlich und zeitersparend.
  • Außerdem hat VSCode nützliche Boilerplate-Codes. Wenn du beispielsweise "html:5" in eine .html-Datei schreibst und Tab drückst generiert dir VSCode den kompletten Grundriss einer HTML-Seite mit Head und Body. Das spart eine Menge Zeit.
...zur Antwort

Sieht vermutlich nicht gut aus wenn du das Bild streckst, ich würde da lieber ein neues Bild machen das perfekt passt, oder mich mit dem jetzigen Aspect-Ratio zufriedengeben.

Aber da du gefragt hast, so sollte es gehen:

background-size: 100% 100%;
...zur Antwort

Schonmal ein guter Ansatz!

Deine Abfrage, ob die beiden Arrays unterschiedlich lang sind, kann vor die Schleife. Das mehrmals zu überprüfen ist sinnlos, die Anzahl der enthaltenen Elemente ändert sich ja nicht.
Und du hast noch ein paar Syntaxfehler im Code:
- Der Strichpunkt nach dem if muss weg
- Es heißt array.length, nicht array.length[i]. length liefert eine Zahl zurück, da macht das [i] dahinter keinen Sinn.

Dann funktioniert der Code auch:

public static boolean compareArrays(int [] a, int [] b) {
  if (a.length != b.length) { // Unterschiedlich viele Elemente enthalten
    return false;
  }

  for (int i=0; i < a.length; i++) { // Beiden Arrays haben hier garantiert die selbe Länge, also reicht hier die eine Beschränkung
    if (a[i] != b[i]) {
      return false;
    }
  }

  return true;
}
...zur Antwort

Verwende zum Screenshotten eine andere Library, z.B. diese hier:

https://pypi.org/project/mss/

Das sollte um einiges schneller sein als die Screenshot-Funktion von PyAutoGUI.

...zur Antwort

Scheint ein Bug der Bedrock Edition zu sein.

Versuch mal, den Bedrock darunter mit einem anderen Block zu ersetzen, vlt. hilft das.

Oder den Repeater in einen Block zeigen lassen und auf diesem Block das Redstone platzieren.

...zur Antwort

Bei Aternos kannst du sie nicht höher Stellen.

Aber du kannst diese Mod installieren, damit alle Chunks die du schon einmal geladen hast, bei dir im Client erhalten bleiben:

https://www.curseforge.com/minecraft/mc-mods/bobby

...zur Antwort
Mac OS

Als Web-Entwickler ist ein UNIX-System empfehlenswert, damit die Software auf meinem Computer genau so läuft, wie sie dann später auch in der Cloud (Linux Server) laufen wird.

Außerdem war uns ein sehr guter und leichter Laptop mit gutem Akku wichtig.

Da ist ein MacBook natürlich das beste was man haben kann. Daher setzen als Betriebssystem auf MacOS.

Wäre ich in einem anderen Bürojob-Bereich tätig, so würde ich zu 100% Windows nehmen. Microsoft Office ist unschlagbar, Libre Office hält da nicht mit. Und Windows ist für einen normalen Bürger mit Abstand am einfachsten zu bedienen und hat die meisten nützlichen Features.

...zur Antwort
Taschenrechner programmieren?

Ich habe nun in Java einen Taschenrechner programmiert. Ich bin noch ein Anfänger und bereite mich auf mein Studium vor.

Hier erstmal mein Code:

import java.util.Scanner;

public class Taschenrechner {

    public static void main(String[] args) {

        Scanner benutzereingabe = new Scanner(System.in);

        double zahl1;
        double zahl2;
        char operator;

        System.out.println("Geben sie die erste Zahl ein:");
        zahl1 = benutzereingabe.nextDouble();

        System.out.println("Geben sie die zweite Zahl ein:");
        zahl2 = benutzereingabe.nextDouble();

        System.out.println("Bitte geben sie ihren gewünschten Rechenoperator ein ('+', '-', '*', '/'):");
        operator = benutzereingabe.next().charAt(0);

        if (operator == '+') {
            System.out.println(zahl1 + zahl2);
        } else if (operator == '-') {
            System.out.println(zahl1 - zahl2);
        } else if (operator == '*') {
            System.out.println(zahl1 * zahl2);
        } else if (operator == '/') {
            System.out.println(zahl1 / zahl2);
        } else {
            System.out.println("Ihr Rechenoperator ist nicht gültig!");
        }
    }
}

Meine Frage:

Ich möchte eine Funktion einbauen, bei der ein Text ausgegeben wird:

Bitte geben sie nur Zahlen ein!

Heißt, dass wenn man in die Konsole einen Buchstaben oder ein anderes Symbol eingibt statt eine Zahl, wird dieser Text ausgegeben. Ich habe schon einen Ansatz, aber er ist nicht ganz richtig.

ich würde etwas in die Richtung

if (zahl1 != Zahlen) {
  System.out.println("Bitte geben sie nur Zahlen ein!");
  }

if (zahl2 != Zahlen) {
  System.out.println("Bitte geben sie nur Zahlen ein!");
  }

Das Problem was ich habe ist, dass die Variable "Zahlen" ja gar nicht existiert. Ich wüsste auch jetzt nicht, wie man das mit einem Array lösen sollte.

...zur Frage

Du kannst um das .nextDouble einfach ein try-catch bauen, das den Fehler abfängt, der bei falscher Eingabe geworfen wird. Und dann im Fehlerfall, also innerhalb des catch-Blocks, deinen gewünschten Text ausgeben.

try {
  zahl1 = benutzereingabe.nextDouble();
} catch(InputMismatchException e) {
  System.out.println("Bitte geben sie nur Zahlen ein!");
}
...zur Antwort

Problem ist, dass der Sticky-Piston direkt bepowert wird. Von dem Block direkt daneben, auf dem Redstone verläuft.

Der Sticky Piston darf nur indirekt bepowert werden.

Tausche den Block neben dem Sticky-Piston mit Glas oder einem Half-Slab aus, das sollte das Problem beheben.

...zur Antwort

Ich würde einfach einen Lichtblock vor dem Redstone-Block plazieren.

Dann sieht es so aus, als würde der Redstone Block leuchten.

...zur Antwort