Ich stehe auf der Leitung.

Status
Nicht offen für weitere Antworten.
B

benni.ka

Gast
Hallo, ich lerne grade für eine Klausur.
Aber ich sitze jetzt schon seit längerm an einer Aufgabe, bei der ich den Fehler einfach nicht finde. Vielleicht kann mir ja jemand weiter helfen. Eigentlich ist es ja ganz einfach, aber ich finde den Fehler einfach nicht :bahnhof: Hab schon alles ausprobiert.
Also, die Aufgabe lautet:
Schreiben sie ein Programm, dass das Produkt der Zahlen im Intervall von [1;15] berechnet, die sowohl Vielfache von 3 und 5 sind.
Meine Lösung lautet:

Code:
 public class Produkt { 
      public static int berechneProdukt(){ 
           int produkt = 1; 
           for (int i=1; i <= 15; i++){ 
                if (i % 5 <= 0 || i % 3 <= 0){ 
                     produkt = produkt * i; 
                } 
           } 
           return produkt; 
      } 
      public static void main(String[] args){ 
           System.out.println(berechneProdukt()); 
      } 
  
 }

Eigentlich sollte am Schluss ein Ergebnis von 21870000 rauskommen. Aber mein Programm spuckt die Zahl 1458000 aus.
Also irgendwie finde ich den Fehler nicht. Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht ???:L Kann mir bitte jemand helfen und mich von der Leitung runter holen, auf der ich grade stehe. Danke schon mal!
 

ToKaM OnE

Aktives Mitglied
Habe das ganze jezt auch mal gecoded, und komme auch zum oben genannten Ergebniss.

Code:
public class Produkt {

	public static void main(String[] args) {
		
		long produkt=1;
		
		for (int i = 1; i<= 15; i++) {			
			if (i%3==0||i%5==0) {				
				produkt*=i;				
			}						
		}
		System.out.println(produkt);
	}

}

Meiner Ansicht nach ist unsere Lösung richtig.

1458000*15=21870000
-aber das ist natürlich quatsch, wieso sollte man die 15 2mal in die Berechnung mit einbeziehen?
Weil die vielfaches von 3 und von 5 ist ????


@EDIT:

hätte fast ganz vergessen ...

wieso schreibst du bei dir rein if i%3<=0 ?
wann kann denn i%3 kleiner 0 werden wenn i nie kleiner 0 ist ?
 
E

Eddie

Gast
Ich versteh die Aufgabenstellung nicht. Was sollen "Zahlen, die sowohl Vielfache von 3 und 5 sind" sein? Steht das so wörtlich in der Aufgabe?
 

Micha_S

Aktives Mitglied
Ich hab mir gedacht das einmal Vielfache von 3 und Vielfache von 5 genommen werden sollen.
Bei sowohl von 5 und 3 wäre es ein wenig witzlos, da das dann nur die 15 wäre...
 
G

Guest

Gast
Naja, irgendwie klingt das ja logisch. Habe aber auch noch eine zweite Variante und da kommt eben was anderes raus. Also muss ja in irgendeiner der beiden Varianten ein Fehler sein.
Hier erst mal kurz Variante 2:

Code:
public class Produkt { 
      public static int berechneProdukt() { 
           int produkt = 1; 
           for (int i = 1; i <= 15; i++){ 
                if (i % 3 <= 0){ 
                     produkt = produkt * i; 
                } 
                if (i % 5 <= 0){ 
                     produkt = produkt * i; 
                } 
           } 
           return produkt; 
      } 
 public static void main(String[] args){ 
      System.out.println(berechneProdukt()); 
 } 
 }

Also hier kommt jetzt eben 21870000. Was stimmt denn nun? Vielleicht findet ihr ja den Fehler. Ich bin leider schon verzweifelt.

:roll:

Danke
 

kama

Top Contributor
Hallo,

Anonymous hat gesagt.:
Also hier kommt jetzt eben 21870000. Was stimmt denn nun? Vielleicht findet ihr ja den Fehler. Ich bin leider schon verzweifelt.
Das Problem ist einfach, dass bei 15 sowohl (i%5 als auch i%3) jeweils 0 sind, sprich das vielfache sind. Somit muss hier zwischen den Beiden unterschieden werden. In den vorherigen Versionen wird dann für den Fall dann eben nur eine Multiplikation durchgeführt.

MfG
Karl Heinz Marbaise
 
S

SlaterB

Gast
in der zweiten Variant wird die 15 zweimal multipliziert,
da (nur) für diese beide if true sind
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben