Java, wie kann ich 2 Integer in eine Funktion übertragen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hey,

bist ja schon gut weit gekommen seit gestern.

Was dir fehlt ist ein "return" damit deine Methoden auch Werte zurückgeben können. Außerdem kannst Du einer Methode auch mehr als einen Parameter übergeben.

Zum Beispiel so:

package naechsterversuch;

import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int zahl = message();
        int myNumber = mynumber();

        command(zahl, myNumber);
    }

    private static int message() {
        Random generator = new Random();
        int zahl = generator.nextInt(10);

        return zahl;
    }

    private static int mynumber() {
        System.out.println("Bitte eine Zahl eingeben (0-9)");
        Scanner scanner = new Scanner(System.in);
        int meinenummer = scanner.nextInt();

        return meinenummer;
    }

    private static void command(int zahl, int meineNummer) {
        if (meineNummer == zahl) {
            System.out.println("Jup, beide Zahlen sind gleich " + zahl);
        } else {
            System.out.println("Beide Zahlen sind ungleich "+zahl+", "+meineNummer);
        }
    }

}
  • Das richtet sich an Anfänger
  • Ich habe Bezeichner belassen wie sie sind, typischerweise würde man nicht Deutsch und Englisch mischen und auch nicht mal den einen Bezeichner und dann wieder einen anderen nutzen
  • Man würde nicht alles statisch machen
  • Man würde nicht mit System.out arbeiten für eine Ausgabe
  • Random würde man nicht jedes mal instanziieren, sondern wiederverwenden
  • Scanner genauso
  • Man würde Variablen nicht zuweisen um sie direkt zu returnen
  • etc etc

Gruß

Woher ich das weiß:Berufserfahrung

CloudBeta 
Fragesteller
 21.12.2021, 21:11

Achsoo ich muss die in der main Funktion dann so zusammen machen? :D

0
AldoradoXYZ  21.12.2021, 21:12
@CloudBeta

message und mynumber sind beides Methoden die jeweils einen int liefern.

Diesen int weist Du jeweils Variablen zu um diese dann an die Methode command als Parameter weiterzugeben.

Gruß

0
CloudBeta 
Fragesteller
 21.12.2021, 21:28
@AldoradoXYZ
was muss ich hier noch zwingend hinzufügen? will den text nicht einfach reinkopieren sonst lernt man ja nichs...package com.filmundtonstudio;

import  java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int zahl = message();
        int meinenummer = mynumber();
        command(zahl, meinenummer);
    }
    public static int message() {
        Random generator = new Random();
        int zahl = generator.nextInt(10);
        return zahl;
    }
    public static int mynumber() {
        Scanner scanner = new Scanner(System.in);
        int meinenummer = scanner.nextInt();
        return meinenummer;
    }
    public static int command(int meinenummer, int zahl) {
        System.out.println(zahl);
    }
}
0
AldoradoXYZ  21.12.2021, 21:42
@CloudBeta

Hey,

es kommt drauf an was Du mit "command" genau erreichen willst. Was soll die Methode denn machen?

Der Compiler beschwert sich bei deinem Stand natürlich.
Die Methode command verspricht einen int zurückzuliefern.

"public static int command" int ist in dem Fall der return Type. Deine Methode hat aber überhaupt kein return.
Mindestens musst Du also ein return ergänzen, damit der Compiler nicht mehr meckert:

  public static int command(int meinenummer, int zahl) {
     System.out.println(zahl);
     return 0; 
  }

Aber das ist sicher nicht das was Du mit der Methode machen willst. Was Du wohl machen willst ist irgend eine Aktion mit den beiden übergebenen Zahlen. Wie wäre es mit einer Addition?

public static int command(int meinenummer, int zahl) {
     int result = meinenummer + zahl;
     return result; 
}

Du kannst auch abkürzen:

public static int command(int meinenummer, int zahl) {
     return meinenummer + zahl;    
}

Das Ergebnis des command Aufrufs kannst Du dann einer Variablen zuweisen und weiter nutzen.

public static void main(String[] args) {
        int zahl = message();
        int meinenummer = mynumber();
        int commandResult = command(zahl, meinenummer);
        System.out.println("Result of the command was: "+commandResult);
}

Viel Spaß

0
CloudBeta 
Fragesteller
 21.12.2021, 21:48
@AldoradoXYZ

wofür brauche ich überhaubt irgendwo returns? xD meine anderen haben alle ohne returns funktioniert die hatten halt nur eine variable pro funktion ergänst

0
AldoradoXYZ  21.12.2021, 21:53
@CloudBeta

Naja, Du hast eine Methode die etwas für dich erledigt und dann das Ergebnis per Return zurückliefert.

Alternativ kannst Du ewig lange Methoden schreiben, die einfach "alles machen". Oder aber Du hast Kaskaden von Methoden. Methode a macht etwas und ruft mit dem Ergebnis Methode b auf. b macht wieder etwas und ruf c auf.
Das Problem dabei ist dass diese Methodenkaskaden sehr schwer zu überblicken, fehleranfällig und schwer zu verstehen sind.
Auch sind Anpassungen sehr, sehr schwer. Jegliche Anpassung wirkt sich evtl. auf alle Methoden "darüber" aus.

Was man daher lieber macht ist weniger tiefe Strukturen und die Ergebnisse von einer Methode an die nächste weiter geben.

resultA = doA();
resultB = doB();
resultC = doC(resultA, resultB);

Aber letztendlich kommt es auf den konkreten Fall an. Man versucht möglichst einfache Lösungen zu finden. Besonders dann, wenn die Aufgaben komplex sind. Sehr, sehr oft kann man für extrem komplizierte Sachverhalte sehr einfache Lösungen finden und so macht man die Sache beherrschbar.

Gruß

0
CloudBeta 
Fragesteller
 21.12.2021, 22:10
@AldoradoXYZ
package com.filmundtonstudio;

import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int zahl = message();
        int meinenummer = mynumber();
        command( meinenummer , zahl);
    }
    public static int message() {
        Random generator = new Random();
        int zahl = generator.nextInt(10);
        return zahl;
    }
    public static int mynumber() {
        Scanner scanner = new Scanner(System.in);
        int meinenummer = scanner.nextInt();
        return meinenummer;
    }
    public static int command(int meinenummer,int zahl) {


        if(meinenummer = zahl){
            System.out.println("yess");
            return meinenummer + zahl;
        } else {
            System.out.println("nee");
            main();
        }


    }
}

sooo ich habe es jetzt verszcht aber er gibt mir fehler.. :(

0
AldoradoXYZ  21.12.2021, 23:41
@CloudBeta
public static int command(int meinenummer,int zahl) {
        if(meinenummer = zahl){  //hier musst Du == verwenden!
            System.out.println("yess");
            return meinenummer + zahl;
        } else {
            System.out.println("nee");
            main(); //das hier ist ein Problem
        }
    }

Du willst mit deinem main() wohl zur Main-Methode zurück, aber geht so nicht.
Deine Methode verspricht einen int zurückzugeben, also muss auch in dem else-Pfad ein int zurückgegeben werden.
Schreibt statt main() einfach return 0;.
Außerdem Du versuchst einen Vergleich mit dem = Operator. Der = Operator wird aber schon für eine Zuweisung verwendet. Um zwei int zu vergleichen gibt es daher den == Operator.

Gruß

0

Du gibst in den Klammern eine Liste an Parametern an, die du durch Kommas trennst:

public void myFunction(int first, int second, String third) { ... }

Der Funktionsaufruf erfolgt dann mit, etc:

myFunction(1, 2, "Hello world");

CloudBeta 
Fragesteller
 21.12.2021, 21:07

meinst du dann puplic void command(int meinenummer, int zahl) {}
und dann was? habe es nicht verstanden mache das erst seit gestern :(

0
tomytom100  21.12.2021, 21:08
@CloudBeta

Ja genau richtig, public mit b aber sonst passt's. Dann kannst du im Funktionsrumpf zwischen den geschweiften Klammern neue Ausdrücke schreiben, zum Beispiel zahlen mit dem Plusoperator + addieren, etc.

0
CloudBeta 
Fragesteller
 21.12.2021, 21:30
@tomytom100

das hat aber nicht funktionert das war das erste was ich getestet habe xD

0
tomytom100  21.12.2021, 21:33
@CloudBeta

Dann lese dir nochmal die Java-Docs dazu durch. Es ist keine Hexenwissenschaft. Du wirst noch einen Fehler bei dir haben. Es gibt aber auch super YouTube Videos für Anfänger dazu. Da kannst du auch nochmal die Datentypen und Variablen lernen, bevor du anfängst komplexe Methoden-Abhängigkeiten zu bauen.

0

Beispielmethode, die aus zwei Ganzzahlen die Summe bildet und diese wieder zurückgibt:

public static int summe(int z1, int z2) {
  return (z1+z2);
}