Brauche Hilfe bei JAVA! (Rekursion) - Fehlermeldung: missing return statement.

6 Antworten

wenn du in einem if-statement etwas returnst, wird es logischerweise nur dann zurückgegeben. java braucht aber für JEDEN falll ein return-statement. deshalb schreiben die meisten programmierer einfach ein return -1; ans ende, wenn sonst nur in if-statements etwas returnt wird. also immer ans ende der methode ein return -1;

Ich weiß nicht, welche Zeile 34 ist (und bin offen gestanden zu faul, von Hand nachzuzählen), aber vom kurzen draufschauen gibt es einen Pfad ohne return-Statement in div(), wenn in den ersten if-Zweig gesprungen wird und die darunter liegenden if-Bedingungen zu "false" ausgewertet werden.

"public static int mul(int i, int g){ if(i >= 0){ return mulhelp(i, g); }//Ende if if(g < 0){ return mulhelp(i, -g); }//Ende if }//Ende mul Methode"

Hier zum Beispiel, wenn ich die untere if Abfrage weglasse, dann klappt das Programm, aber wenn ich zwei oder mehrere mache, dann klappt es nicht. Kannst du mir vielleicht sagen, wo ich noch etwas einfügen muss?

0
@kidbabo

Also kurzum: { if (A) return; if (B) return; }. Und was gibt die Methode zurück, wenn weder A noch B?

0
return(div_help(a - b, b) + 1);

Du veruchst hier eine Funktion "return" aufzurufen, welche er nicht kennt. Die Klammern müssen meiner Meinung nach weg oder wenigstens ein Leerzeichen dazwischen. Ich hab grad kein Eclipse drauf, aber ich wette, dass der Kompiler das als Funktion wertet.

Aber es ist ein Interessanter Ansatz für eine Methode, welche es längst gibt ^^ Sind das Übungsaufgaben? ^^

PS: bitte mit dem if gewissenhafter arbeiten. du hast ganz schön viele if's nacheinander, was man eigentlich nicht so schreibt. if-elseif-else sind bessere Lösungen. Auch wenn der Kode ansich richtig ist und funktioniert.

PS: Und bitte bei der nächsten Frage in der Vorschau schauen, ob er den Quelltext richtig in der Quelltext-Zitat-Funktion eingebettet hat. Der erste Teil deines Kodes ist nicht eingerückt und somit schwer lesbar.

PPS: Und bitte auch nächste mal mit einem Kommentar ( // ) die Zeile markieren, wo der Fehler ist. Zeile 34 ^^......hier zählt doch keiner nach, erst recht nicht wenn nur die hälfte richtig eingerückt ist ^^

Danke.

Ich hoffe der Fehler war korrekt den ich dir gegeben habe. (die Zeile mit dem return)

hi, ich soll ein programm schreiben das arabische zahlen in römische zahlen umrechnet, dabei soll ich rekursiv vorgehen. kann mir da jemand helfen?

iterativ hab ich das hinbekommen, (das hat aber mindestens eine laufzeit von O(n^2) ca würd ich jetzt mal schätzen) nur weiß ich jetzt nicht wie ich diese iterative lösung in eine rekusive umwandeln kann. hier mein iterativer umrechner:

public class Roman {

static String toRoman(int n) {
    String [] roman = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
    int [] arab = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
    String Output ="";
    
    for (int i = roman.length-1; i >= 0; i--) {
       int times = n / arab[i]; 
       for (int j = 1; j <= times; j++) {
           Output = Output + roman[i];
       }
      n = n % arab[i]; 
    }
    return Output;
}

public static void main(String[] args) {
    if (args.length==0) return;
    int N = Integer.parseInt(args[0]);
    
    System.out.println(toRoman(N));
}

}

danke schon mal im voraus!

...zur Frage

Java frage zu boolean?

public static void main (string [] args){ System.out.println(welcheKleidung(false));}

public static String welcheKleidung (boolean esRegnet){ if (esRegnet){ return "regenjacken"} else { return "winterjacke"}

woher soll man hier nun wissen was raus kommt? es wurde ja nicht definiert , was false und was true ist?

...zur Frage

Java Primzahlen Programm

Hey Leute, ich habe mal wieder eine Java-Aufgabe, bei welcher ich den Fehler nicht finde. Ich hoffe ihr könnt mir irgendwie weiterhelfen.

public class PrimeNumbers {

static int x = 1000;
private static boolean[] Primes = new boolean[x];

// Hier ist der "statische Konstruktor"
static {
}

private static boolean checkPrime(int number) {

    return false;
}

public static boolean isPrime(int number) {
    int limit=1000;
    int zahl;      
    int zaehler;   
    boolean primzahl; 

    for (zahl = 2; zahl <= limit; zahl++) {
        primzahl = true;

        for (zaehler = 2; zaehler <= zahl/2; zaehler++) {
            if (zahl % zaehler == 0) {
                primzahl = false;
              break;
            }

        }

        if (primzahl) {
            return true;
        }
    }
    return false;
}

Die Primzahlen, welche zu überprüfen sind werden in einer anderen Methode übergeben und abefragt. Ich habe hier das Problem, dass er mir entweder immer true oder immer false returned, egal ob es nun eine Primzahl ist oder nicht. Ich komme einfach nicht weiter, egal wie ich es drehe und wende. Ich hoffe ihr könnt mir weiterhelfen.

Grüße Dubsepp

...zur Frage

Wie mehrere Methoden in Java

Hallo zusammen,

und zwar lern ich gerade Java und hab mir en Programm geschrieben, dass einen Roulett-Tisch simulieren sollte. jetzt kahm mein ausbilder her und hat mir lauter Methoden über mein Programm geschriebn, jetzt wei´ß ich nicht, wie ich das machen muss oder was ich da überhaupst machen soll, kann mir jemand helfen ???

Entwicklungsumgebung: Eclipse

import java.util.*;

public class Roulette {

 private static boolean askForHighRisk(){
      return false;
  }
  private static boolean askForQuit(){
      return true;
  }
  private static boolean askBetOnEven(){
      return true;
  }
  private static int askSetOnNumber(){
    return 0;

  }
  private static int askForStake(int minLimit, int maxLimit){
      return 0;
  }
  private static int rollBall() {
      return 1;
  }  

  public static void main(String[] args) {

  System.out.printf("Bitte gib dein Startgeld zwischen 10€ und 10.000€ ein (in 10€ Schritten)!!!\n");

  Scanner startMoney = new Scanner (System.in);
  int  startmoney = startMoney.nextInt();
  int modulo = startmoney%10;
  int realstartmoney = 0;
  int zahlintager;
  String A= "A";
  String B= "B";
  String ja = "ja";
  String nein = "nein";


  //set the startmoney, only 10€ steps between 10 -10 000 
  if (startmoney > 10000) {
    startmoney =10000;
  }

  if (startmoney != 0) {
    realstartmoney = startmoney-modulo;
  }
  else {
    realstartmoney = startmoney;
  }

System.out.println("Sie haben jetzt " + realstartmoney + "€ auf ihrem Konto");

//loop till no money
  while (realstartmoney >0) {

    //set random int number
    int generator = (int) (Math.random()*36);      



  System.out.println("Wollen sie mit einer \"A (hohen)\" oder einer \"B (niedrigen)\" Chance spielen?");



  String choiceAorB = new String();
  Scanner AorB = new Scanner(System.in);
  choiceAorB = AorB.next();
  int geradeungerade = generator % 2;       

  if (choiceAorB.contentEquals(A)) {
    System.out.println("wollen sie auf \"A (gerade)\" oder \"B (ungerade)\"setzen");


    String choiceBorA = new String();
    Scanner BorA = new Scanner(System.in);
    choiceBorA = BorA.next();

    System.out.println("Wie viel wollen sie setzen????");

    Scanner setMoney = new Scanner(System.in);
    int nosetmoney = setMoney.nextInt();
    int setmoney = 0;
    int modulo2 = nosetmoney%10;

    if (modulo2 != 0) {
      setmoney = nosetmoney-modulo2;
    }
    else {
      setmoney = nosetmoney;
    }

    if (setmoney < 10) {
      System.out.println("Dein Einsatz wurde auf 10€ gesetzt");
      setmoney =10;
    }
          if (setmoney> realstartmoney) {
            System.out.println("So viel Geld h
...zur Frage

Frage zu Java Rekursion (Dezimalzahl in das übergebene Zahlensystem umwandeln)?

Aaalso kann mir jemand helfen, wie diese Java Programmieraufgabe geht? Habe schon des öfteren mit rekursiven Methoden gearbeitet, jedoch habe ich keinen Ansatz wie ich das hier anstellen soll:

Schreiben Sie eine Methode int gibDarstellung(int zahl, int basis) die ohne Schleifen eine dezimale Zahl in die übergebene Basis umrechnet. Beispiel: (15, 2) wird zu 1111 (also wird quasi 15 in binär zurück gegeben.

Dahinter stand noch in klammern Horner-Schema.

Habe die Aufgabe aus einer Klausurrekonstruktion von einem anderen Studenten, könnte also sein, dass die Aufgabe in "echt" auch ein bisschen anders aussah.

...zur Frage

Rekursion schriftlich auswerten?

Hallo in einer Aufgabe meiner "Informatiktestschulaufgabe" soll man folgende Rekursion (Java) schriftlich auswerten, für x(5) :

public int x(int y) { if (y==2) return 3; else { if (y==1) return 1; else return 2x(y-1)+3x(y-2); }}

Ich habe den Code einfach mal in Java implementiert und das Ergebnis für x(5) war 81. Nun meine Frage wie kommt man auf dieses Ergebnis durch eine schriftliche Auswertung?

Freue mich auf eure Antworten!!

...zur Frage

Was möchtest Du wissen?