Java, wie kann ich 2 Integer in eine Funktion übertragen?
Hallo, ich habe gestern angefangen mit Java und versuche mich grade mit funktionen aueinander zu setzen. Ich weis schon wie man eine variable Importiert aber wie kann man 2 oder mehr Importieren? Die meinenummer ist schon drinn aber die variable "zahl" weis ich nicht wo die hinkommen soll... Danke für jede Hilfe
3 Antworten
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ß
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ß
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);
}
}
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ß
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
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ß
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.. :(
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ß
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");
meinst du dann puplic void command(int meinenummer, int zahl) {}
und dann was? habe es nicht verstanden mache das erst seit gestern :(
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.
das hat aber nicht funktionert das war das erste was ich getestet habe xD
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.
Beispielmethode, die aus zwei Ganzzahlen die Summe bildet und diese wieder zurückgibt:
public static int summe(int z1, int z2) {
return (z1+z2);
}
Achsoo ich muss die in der main Funktion dann so zusammen machen? :D