Ist das etwa schon deine "Lösung"? Mal vom Java-Style-Guide abgesehen, steht in dem JavaDoc doch überhaupt nicht drin, was, die Methode eigentlich macht. Ein Entwickler, der nur die Dokumentation liest, und deinen Code nicht vor der Nase hat, wird damit im jetzigen Zustand absolut GAR NICHTS anfangen können. :)

Schreib doch einfach direkt, dass "zwei positive Ganzzahlen addiert werden" und bei negativen Werten eine Ausnahme geworfen wird:

/**
 * Addiert zwei positive Ganzzahlen.
 *
 * Auf mögliche Überläufe wird nicht geprüft.
 *
 * @param x erster Summand
 * @param y zweiter Summand
 *
 * @return Die Summe der beiden Argumente.
 * @throws IllegalArgumentException Falls mindestens ein Argument negativ ist.
 */

Das ist jetzt zwar nicht exakt GJSG konform, aber das kannste ja noch anpassen. Immerhin weiß man jetzt, was die Funktion tut. :)

PS: Normalerweise würde ich englische Kommentare bevorzugen, aber ich hab mich jetzt mal an deine Übung angepasst. ;)

...zur Antwort

Also du willst wissen, ob jede Zahl innerhalb der Arrays innerhalb der Liste auch in einem vorher definierten anderen Array vorhanden ist? Meinst du so etwas hier?

import java.util.Arrays;
import java.util.LinkedList;

class Foo {

  public static void main(final String[] args) {
    int[] arr = { 2, 3, 1 };
    Arrays.sort(arr);

    final LinkedList<int[]> list = new LinkedList<int[]>() {{
      add(new int[] {1,2,2});
      add(new int[] {1,3,2});
      add(new int[] {3,2,1});
    }};

    outer:
    for (int[] item : list) {
      for (int elem : item) {
        if (Arrays.binarySearch(arr, elem) < 0) {
          System.out.println("Not found! :(");

          continue outer;
        }
      }

      System.out.println("Found! :)");
    }
  }

}

Noch ein paar Bemerkungen dazu:

  • Weil ich eine binäre Suche nutze, muss das Array mit deinen erwarteten Werten vorher sortiert sein. (Binäre Suchen sind bei größeren Arrays VIEL schneller als eine naive lineare Suche!)
  • Falls du den Trick mit der sog. "Double Brace Initialization" der Liste noch nicht kanntest, bitte nicht wundern. Hab hier gerade kein aktuelles Java vor der Nase, und muss diese antiquierte Variante der Intialisierung nutzen. Kannst du also gerne durch das ersetzen, was dir am liebsten ist.
  • Den continue-Teil mit dem Label kannst du natürlich auch abändern. Gibt ja Leute, die stattdessen lieber eine Statusvariable nutzen. Bleibt dir überlassen!

Ansonsten sollte das Programm das tun, was du vor hast. :)

a

...zur Antwort

Geh in die nächste Unibibliothek, und suche dort nach Büchern über Immunologie. Neben vielen Fachbüchern findest du dort auch das ein oder andere Werk fürs Grundstudium, welches du als Oberschüler in ausreichende Maße verstehen solltest.

Die Bücher sind alle seriös im Sinne von "wissenschaftlich", was auf kein Impfgegner-Buch zutreffen dürfte.

Viel Erfolg! :)

...zur Antwort

Also wenn du dich halbwegs akzeptabel in C, Java und Python einfummelst (möglichst in diese Reihenfolge, aber das ist wohl Ansichtssache), dann wird es dir dein zukünftiges Studium enorm erleichtern.

Evtl. kommst du noch mit Matlab, Haskell, einem Lisp-Dialekt, o. ä. in Berührung, aber mit 95% wahrscheinlichkeit wird an deiner zukünftigen Hochschule auf Java und / oder Python und / oder C bzw. C++ gesetzt werden.

Deshalb kannst du dir JETZT schon verdammt viel Arbeit im späteren Studium ersparen, wenn du diese drei Sprachen lernst. (Eine nach der anderen! Lass dich nicht vom Umfang abschrecken ... ist in 3 Jahren locker möglich, zumindest auf Grundstudium-Niveau!)

Allerdings gibt es noch eine Sache, die du noch viel dringender Lernen solltest, als das Programmieren an sich: Mathematik!

Die meisten Studenten unterschätzen den Mathe-Teil gewaltig vor Studienbeginn, obwohl sie überall gesagt bekommen: "Lernt Mathe!". :)

An deiner Stelle würde ich mir den "Arens" besorgen (ein schweres, dickes, fettes Mathebuch mit unvergleichbar exzellenter Didaktik):

https://www.amazon.de/Mathematik-Tilo-Arens/dp/3662567407/

Wenn möglich, besorge dir dazu noch den Band mit Übungsaufgaben, und den Zusatzband mit tiefergehender Thematik. (Falls es die für die aktuelle Ausgabe schon geben sollte ... kenne persönlich nur die 2015er Version in der dritten Auflage. Der Link oben führt zur 4ten Auflage vom Herbst letzten Jahres.)

Aaaaaaaber, im Arens wird ausdrücklich schon in der Einleitung darauf hingeweisen, dass Grundlagen des "Rechnens" beherrscht werden sollten, und auch wenn es dir primtiv erscheinen mag, gib dir einen Ruck, springe über deinen eigenen Schatten, und arbeite dieses Buch hier durch:

https://www.amazon.de/Mathematik-leicht-gemacht-Hans-Kreul/dp/3808556099/

Das deckt zwar nicht mal alle Themen bis zum Abi ab, enthält aber alle nötigen Rechenregeln und gefühlt Milliarden von Übungsaufgaben. Und bevor du jetzt denkst: "So einen Kinderkram brauche ich nicht", denke daran, dass sich die meisten Studenten selbst überschätzen, und es fast immer (!) an mangelnden Rechenkenntnissen liegt, dass sie Klausuren der höheren Mathematik versemmeln.

Und wenn du erfolgreich mit Tensoren rechnen willst, dann hilft es dir verdammt weiter, wenn du sattelfest bei so "primitiven Dingen", wie der Bruchrechnung, den binomischen Formeln oder den Potenzgesetzen bist.

Nochmal in aller Deutlichkeit: Die MEISTEN Studenten, die erfolgreich ihr Abi geschaft haben, scheitern im Studium am Matheteil, wegen mangelnder Rechenkenntnisse! Also nimm das nicht auf die leichte Schulter! Auch wenn dir das "Schulrechnen" trivial erscheint ... test dein Wissen mit den Übungsaufgaben aus obigem Buch. Falls du etwas nicht kannst, wirst du es damit garantiert lernen. Das nur als gut gemeinter Rat!

Fazit: Lerne die drei genannten Programmiersprachen in den nächsten 3 Jahren (musst die alle 3 nicht perfekt können, aber einen groben Überblick solltest du haben), dann prüfe deine Rechenkenntnisse mit dem Buch "Mathematik leicht gemacht" und wenn das alles sitzt, arbeite den Arens Schritt für Schritt durch.

Wenn du das tust, werden dir die ersten 4 Semester wie Pippifax erscheinen! ;)

...zur Antwort

Neben den vielen "kindgerechten" Fertigplatinen kannst du dich auch mit Mikrocontrollern befassen.

Die Programmierung von den Dingern lässt dir VIEL mehr Freiheiten, als Arduino & Co, hat aber auch eine wesentlich steilere Lernkurve.

Aber einen Atmel µC kannst du ohne weiteres so programmieren, dass der interne Taktgeber genutzt wird, und "außen" nur zwei Kabel für die Stromversorgung notwendig sind. (Dazu sei angemerkt, dass man in vielen Fällen natürlich einen externen Quarz haben will, aber für Einsteiger ist es nun mal schön übersichtlich, wenn am µC nur zwei Kabel dran hängen, und sonst gar nix.)

Programmiergeräte dafür kosten ca. 5 bis 10 € bei eBay (sog. ISP-Programmer), die hängst du dir an einen freien USB-Port und auf der anderen Seite steckst du einige Drähte in den Breadboard. Die Mikrocontroller an sich kosten zwischen wenigen Cent, bis wenige Euro, und sind noch viel billiger, als die billigsten Arduino-China-Klone.

Falls du die AVRs oder PICs nicht magst, kannst du auch einen MSP430 programmieren. Entwicklerboards mit USB-Programmer bekommst du neu für 5€ bis 20€, wobei diese Dinge eine völlig andere Architektur als die Teile von Atmel haben, und sehr für Dinge geeignet sind, die auf extremes Energiesparen ausgelegt sind.

Also schnelle Lösungen wirst du mit einem ausgewachsenen RasPi oder einem Arduino bauen können, aber wenn du mal etwas wirklich "Eigenes" bauen willst, was WIRKLICH klein sein, und sich evtl. auch verkaufen lassen soll, dann solltest du dich durch die µC-Programmierung durch beißen.

Diese Seite hier ist ein guter Einstieg und bietet Tutorials für alle oben genannten µC Typen (und noch viel mehr):

https://www.mikrocontroller.net/

Die Leute dort drüben sind wesentlich kompetenter auf dem Gebiet als GF, also nutze das dortige Forum für etwaige Fragen.

Ansonsten: Weder ein RasPi, noch ein Arduino ist teuer. Kauf dir am besten beide, und spiele damit herum, um ein Gefühl dafür zu bekommen. Und wenn dir die Dinger irgendwann zu klobig mit ihrem oft unnützen Drumherum erscheinen, dann erinnere dich an meine Antwort hier, und arbeite dich in die Mikrocontroller-Entwicklung ein!

Viel Erfolg! ;)

...zur Antwort

Die anderen haben dir ja schon geantwortet, deshalb gehe ich darauf nicht mehr ein, aber bei Frage 2 wäre die Aufwandsklasse eigentich O(0), weil der Compiler so einen sinnlosen Code komplett wegoptimieren würde. :)

...zur Antwort

Sei dir bitte im Klaren darüber, dass es kaum eine Programmiersprache gibt, in der du Whitespaces (allen voran ' ', '\t', '\r', '\n') beliebig setzen und austauschen kannst, ohne Bugs einzubauen.

Beispiel JavaScript:

function foo() {
  return
    123;
}

Die Funktion liefert "undefined" und nicht "123" wie erwartet.

Beispiel C++:

switch (x) {
  case 0: [[fallthrough]];
  case 1: foobar();
  default: throw runtime_error {};
}

Das sollte sich nicht kompilieren lassen, da das fallthrough-Attribut laut Standard zwingend alleine auf einer eigenen Zeile stehen muss.

Ähnliche Beispiele gibt es - wie gesagt - für so ziemlich alle Programmiersprachen. Dass Python hier einfach ehrlich ist hat auch den Vorteil, dass man katastrophal formatierten Code von Anfängern wie bei anderen Programmiersprachen eigentlich nie zu Gesicht bekommt.

Ein Scheme-Programmierer wird sich nach der erzwungenen Formatierung von Python sehnen, denn wenn man sich bei diesen Lisp-artigen Sprachen nicht verdammt konzentriert, versinkt die Welt in purem Chaos und man landet in der Klammerhölle. :)

...zur Antwort