Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Abend, habe ein Programm geschrieben allerdings ist dort ein fehler drin, könntet ihr bitte mal drüber schauen und mir sagen wo der fehler ist :/ ?
danke
Java:
//Scanner Einfügen
import java.util.Scanner;
public class Blatt4Aufgabe1 {
//Hauptmethode
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//integer Deklaration
int x = 0;
int zahl1 = 3;
int zahl2 = 4;
//Aufforderung zur Zahlen Eingabe
System.out.println("Was moechten Sie tun ? ");
System.out.println(" <1> - Aufgabenteil A aufrufen ");
System.out.println(" <2> - Aufgabenteil B aufrufen");
System.out.println(" Jede andere Zahl ruft Aufgabenteile A & B auf");
//Benutzer Eingabe
int x = scanner.nextInt();
//if Anweisung was ausgeführt werden soll
if(x = 1) {
addiere();
else if (x = 2)
subtrahiere();
else
addiere() & subtrahiere();
}
}
// Methode A
private int addiere(int zahl1, int zahl2) {
return zahl1 + zahl2;
}
// Methode B
private int subtrahiere(int zahl1, int zahl2) {
return zahl1 - zahl2;
}
}
Ich denke mal da hast Du etwas zu wörtlich genommen ;-) es sollen einfach nur beide Methoden aufgerufen werden.
Weitere Fehler
Die Methoden erwarten zwei Parameter, Du willst sie aber ohne Parameter aufrufen.
Sie sind nicht static und können so nicht aus dem statischen Kontext der main aufgerufen werden.
Ein Fehler ist gut, es sind mehrere.
1. Die Variable x wird doppelt deklariert, was nicht zulässig ist. Bei der Zuweisung int x kannst Du das int weglassen.
2. Innerhalb der ifs wird mit = eine Zuweisung gemacht und kein Vergleich. Numerische Vergleiche auf Gleichheit immer mit ==
3. Die Methoden addiere() und substrahiere() haben zwei Parameter, beim Aufruf werden aber keine Argumente übergeben, was ebenfalls zum Fehler führt.
4. MethodeA() gibt es gar nicht!
//Scanner Einfügen
import java.util.Scanner;
public class Blatt4Aufgabe1 {
//Hauptmethode
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//integer Deklaration
int x = 0;
int zahl1 = 3;
int zahl2 = 4;
//Aufforderung zur Zahlen Eingabe
System.out.println("Was moechten Sie tun ? ");
System.out.println(" <1> - Aufgabenteil A aufrufen ");
System.out.println(" <2> - Aufgabenteil B aufrufen");
System.out.println(" Jede andere Zahl ruft Aufgabenteile A & B auf");
//Benutzer Eingabe
int x = scanner.nextInt();
//if Anweisung was ausgeführt werden soll
if(x == 1) {
addiere(int zahl1, int zahl2);
else if (x == 2)
subtrahiere(int zahl1, int zahl2);
else
addiere(int zahl1, int zahl2) & subtrahiere(int zahl1, int zahl2);
}
}
// Methode A
public static addiere(int zahl1, int zahl2) {
return zahl1 + zahl2;
}
// Methode B
public static subtrahiere(int zahl1, int zahl2) {
return zahl1 - zahl2;
}
}
Die Methodenaufrufe haben immer noch keine Argumente. Und der Aufruf beider Methoden mit & geht auch nicht. In Java wird der Operator & für die bitweise Verknüpfung verwendet.
Der einzig richtige Weg ist sich eines der vielen Java Bücher zu nehmen und die Grundlagen zu lernen. Dieses rumprobieren was du hier machts bringt nichts.
Ich nehme mal an, dass zahl1 und zahl2 jedes mal neu eingelesen werden.
Ansonsten hilft meistens in kleinen Schritten programmieren, ausführen
- geht ==> ok, nächster Schritt
- geht nicht ==> überlegen woran es liegt.
und das das "&" so nicht geht, wurde ja bereits erwähnt. Du sollst einfach die Methoden nacheinander aufrufen: erste Zeile addiere(.. zweite Zeile sub...
//Scanner Einfügen
import java.util.Scanner;
public class Blatt4Aufgabe1 {
//Hauptmethode
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//integer Deklaration
int zahl1 = 3;
int zahl2 = 4;
//Aufforderung zur Zahlen Eingabe
System.out.println("Was moechten Sie tun ? ");
System.out.println(" <1> - Aufgabenteil A aufrufen ");
System.out.println(" <2> - Aufgabenteil B aufrufen");
System.out.println(" Jede andere Zahl ruft Aufgabenteile A & B auf");
//Benutzer Eingabe
int x = scanner.nextInt();
//if Anweisung was ausgeführt werden soll
if(x == 1)
System.out.println("Addition= "+addiere(zahl1, zahl2));
else if (x == 2)
System.out.println("Subtraktion= "+subtrahiere(zahl1, zahl2));
else {
System.out.println("Addition= "+addiere(zahl1, zahl2));
System.out.println("Subtraktion= "+subtrahiere(zahl1, zahl2));
}
}
// Methode A
public static int addiere(int zahl1, int zahl2) {
return zahl1 + zahl2;
}
// Methode B
public static int subtrahiere(int zahl1, int zahl2) {
return zahl1 - zahl2;
}
}
Deine Methoden hatten zwar ein return, jedoch war der Datentyp im Methodenkopf nicht angegeben.
Um eine Variable zu deklarieren gibtst Du den Datentyp an gefolgt vom Namen den die Variable haben soll.
int a;
Danach kannst Du mit a=5; damit arbeiten uns sie einer methode mit addiere(a,a), übergeben.
Deine Parameterübergabe an die Methode addiere und subtrahiere hat so nicht den gewünschten Effekt (die globalen Variablen, die Du oben definiert und initialisiert hast zu übergeben).
subtrahiere(int zahl1, int zahl2); // Dein Aufruf
subtrahiere(zahl1, zahl2); // so geht das. INT musst Du nicht dazusagen, Java weiss das schon
mal eine genrelle frage... sagen wir ich habe eine main methode und ich habe noch eine methode a und methode b mit drin, wie kann ich dann methode a oder b aufrufen ?
bzw die unterprogramme in methode a und b
danke
Du hattest doch gerade eine Main mit den 2 Methoden addiere und subtrahiere.
Meinst Du vielleicht eine weitere Klasse in der Methoden enthalten sind ?
Machst Du das für die Schule, oder ist es privates Interesse ?
mal eine genrelle frage... sagen wir ich habe eine main methode und ich habe noch eine methode a und methode b mit drin, wie kann ich dann methode a oder b aufrufen ?
bzw die unterprogramme in methode a und b
danke
ja ich meine wenn ich zb in die methode a einen rechner machen muss der primzahlen ausrechnet und in methode b zb wenn ich 18 eingebe alle zahlen bis 18 ausgibt :S mache das für die uni
Ich würde vorschlagen Du schliesst dieses Thema, denn die Frage ist erledigt und machst einen neuen Thread auf mit Deiner neuen Frage. Also Knopf "Thema als erledigt markieren". Es freut sich auch sicher jeder über ein Danke, der Dir aus Deiner Sicht bei der Lösung geholfen hat (Danke Button bei den Beiträgen).
//Hauptmethode
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//integer Deklaration
int zahl1 = 3;
int zahl2 = 4;
//Aufforderung zur Zahlen Eingabe
System.out.println("Was moechten Sie tun ? ");
System.out.println(" <1> - Aufgabenteil A aufrufen ");
System.out.println(" <2> - Aufgabenteil B aufrufen");
System.out.println(" Jede andere Zahl ruft Aufgabenteile A & B auf");
//Benutzer Eingabe
String x = reader.readLine();
//if Anweisung was ausgeführt werden soll
if(x.contains("1"))
addiere(zahl1, zahl2);
else if (x.contains("2"))
subtrahiere(zahl1, zahl2);
else {
addiere(zahl1, zahl2); subtrahiere(zahl1, zahl2);
}
}
// Methode A
private static int addiere(int zahl1, int zahl2) {
return zahl1 + zahl2;
}
// Methode B
private static int subtrahiere(int zahl1, int zahl2) {
return zahl1 - zahl2;
}
Methoden addiere u. subtrahiere geben aber ein Ergebnis (int) zurück, vielleicht solltest du das ausgeben...? Ansonsten ist es aber ok. Wenn aber 2 oder mehr if-Blöcke aufeinander folgen, solltest du komplett klammern, denn sonst kann das Dangling-Else-Problem auftreten.