Forum / Grundlagen des Programmierens / 4.Hausübung

4.Hausübung

Meine Lösung zu Beispiel 1:

 import java.util.Scanner;
 public class Bsp1_1*******_4 {

 static double berechneggT (double z1, double z2, double erg){    //das ist die Methode
 while(erg!=0){
 erg=z1%z2;
 z1=z2;
 z2=erg;
 berechneggT (z1,z2,erg);  //wie man sieht ruft sich die Methode selbst immer wieder auf
 }
 return z1;
 }

 public static void main(String [] args){
 Scanner input = new Scanner (System.in);
 try {
    System.out.println("Bitte geben Sie die erste Zahl an:");
    double z1 = input.nextDouble();
    System.out.println("Bitte geben Sie die zweite Zahl an:");
    double z2 = input.nextDouble();
    z1=berechneggT(z1,z2,1);
    System.out.println("Der größte gemeinsame Teiler beträgt: "+z1);
 } 
 catch (Exception e){
    System.out.println("Es ist uns leider ein Fehler unterlaufen.");
    System.out.println("Bitte versuchen Sie es nochmal!");}
 }
 }\n~~~

Zur Erklärung: Rekursion bedeutet, dass sich die Methode immer wieder selbst abruft bis eine Abruchbedingung erfüllt ist. D.h. man kann nicht einfach das Beipiel aus der 2.HÜ rauskopieren^^
Hier ein Link mit einem anschaulichen Beispiel: [Iteration und Rekursion](https://studify.com/outgoing?url=http%3A%2F%2Fwww.java-tutorial.org%2Fiteration_und_rekursion.html)
Clemens ±0

Bei Eingabe: 10 - 0 wirft es dir einen Fehler.

Johannes ±0

Hier eine Lösung zu Bsp 3 :)

Verbesserungsvorschläge sind herzlichst willkommen :)

Clemens ±0

Hier eine Lösung zu Bsp 3 :)

Verbesserungsvorschläge sind herzlichst willkommen :) Sieht doch super aus.

Die if-else-if-Reihe kannst du eleganter über ein Switch lösen. Das "throws EmptyStackException" bei den mathematischen Funktionen ist nicht nötig.

Timotheus Jan +1

hat jemand vielleicht einen vorschlag wie das zweite beispiel funktionieren könnte ? danke im vorhinein!:)

Andreas +3

hiho hier ist eine lösung

Bruno ±0

static class hallo extends Thread {

    int time, rep, id;

    hallo(int r, int t) {
        this.time = t;
        this.rep = r;
        id=tnum;
        tnum++;
    }

    @Override
    public void run() {
        for (int i = 0; i < rep; i++) {
            try {
                sleep(time);
            } catch (InterruptedException e) {
                System.out.println("Fehler");
            }
            
            System.out.println("Thread " + id + " sagt Hallo!");
        }
    }
}

das hier ist der "kritische" teil von bsp2, die classe/methode für den thread um die einzelnen threads zu erstellen habe ich ein array in der gewünschten größe (anzahl der threads) erzeugt beim erzeugen der objekte im array habe ich die gewünschten wiederholungen und die sleep zeit über den konstruktor definiert

dann braucht man zum schluss nur noch eine zählschleife die die threads im array startet

achja die variable tnum, ist als statische variable in der klasse definiert (nur für die threadid) kann man aber auch über System.out.println(Thread.currentThread().getId()-7); machen (keine ahnung warum bei mir da für thread 1 z.b. 8 rauskommt... daher die -7)

hoffe das hat irgendwie geholfen

Bruno ±0

Hier eine Lösung zu Bsp 3 :)

Verbesserungsvorschläge sind herzlichst willkommen :)

dein rechner kann aber doch nur immer 2 zahlen zusammenrechnen oder? er verwendet doch nicht den ganzen stack?

Martin ±0

muss man bei bsp 1 wieder betrachten wenn die 2 zahl größer als die erste ist? oder eher nicht?

Bruno ±0

muss man bei bsp 1 wieder betrachten wenn die 2 zahl größer als die erste ist? oder eher nicht?

nein ist egal wenn du z.b. 5%7 hättest dann ist das ergebnis der ganzzahligen division 0 und der rest 5 dann hast du in der nächsten rechnung 7%5, gleicht sich also immer von selbst aus

Patrick ±0

Weiß jemand wie man Java auf JDK7 aktualisiert, weil er erkennt einen Befehl auf Java 1.6 nicht bei BSP 3.

Habe es bereits installiert und das Netbeans neu gestartet, jedoch funktioniert es trotzdem nicht!

Bitte um eure Hilfe

Clemens +1

Weiß jemand wie man Java auf JDK7 aktualisiert, weil er erkennt einen Befehl auf Java 1.6 nicht bei BSP 3.

Habe es bereits installiert und das Netbeans neu gestartet, jedoch funktioniert es trotzdem nicht!

Bitte um eure Hilfe Java deinstallieren - JDK7 runterladen - installieren.

Johannes +2

du gehst auf: Project Properties; unter Punkt: Sources gibt's eine Auswahl Source/Binary Format

da kannst du Auswählen was verwendet wird...

hoffe das hilft! lg

Markus ±0

mein netbeans unterstützt kein Java 7... nur 1.6 ... habs dann aber direkt über die console gestartet und siehe da funktioniert :)

Incognito ±0

Kann jemand die ganze 4. Hausübung hochladen?

Danke im Voraus :)

Lukas ±0

wer probleme mit der 1.6er Version hat und es nicht in den Griff bekommt, bzw. wer keine weitere Auswahl hat in den Properties ladet sich einfach das herunter und dann funktioniert es: für 64Bit Betriebsystem: klick mich HART! für 32Bit Betriebsystem: klick mich HÄRTER!l

nach der installation dieses updates sollte sich das Netbeans auf 1.7 umstellen lassen.

Viel Erfolg!

Sorry, die Kommentarfunktion ist geschlossen.