# Problem beim Javaprogrammierung (Anfänger)



## GTA 3 (27. November 2010)

*Problem beim Javaprogrammierung (Anfänger)*

Hi Leute, ich hab ein Problem. Bin im Unterricht eigentlich ganz gut mitgekommen aber wenn ich eine Aufgabe seh und ich eine Methode dazu schreiben soll fühl ich mich so als hätte ich alles wieder vergessen.. 
Wir sind grad beim Thema Bedingungsschleifen und wenn ich eine Beispiel Aufgabe seh die wir lösen müssen kommt es mir so vor das ich auf einmal alles wieder vergessen habe was wir gelernt haben. Und zwar sollen wir eine Methode( Hier: getGgT ) zum Euklidschen Algorythmus schreiben! Leider habe ich das mit dem Operator while nicht richtig verstanden und ich wollt euch fragen, ob ihr mir einen BeispielQuelltext schreiben könnt und denn mir erklären könnt.  Die Grundbasis von Klassen, Objekten und Ausgabe etc. kann ich schon. Die müsst ihr mir nicht erklären!

oder: kennt ihr eine Seite die das sehr gut erklärt ?


----------



## zcei (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

while-Schleifen sind mMn sehr einfach zu verstehen.
Dann versuch ichs mal 


```
while (klasse.variable != "Ich")
{
   if(klasse.random() == 5)
   {
      klasse.variable = "Ich";
   }
   else klasse.variable = "Du";
}
```

Ist zwar ein sinnloses Beispiel aber nun gut.
die Bedingnung in Klammern hinter dem while drückt aus, wie lange etwas gemacht werden soll. Hier z.B. solange die Variable nicht 5 ist.
Innerhalb der Schleife sollte man dann irgendwas haben was auch mal unterschiedliche Werte in die Variable für die Abbruchbedingung steckt, damit keine Endlosschleife entsteht.
Das ists dann eigentlich schon.

Den euklidischen Algorithmus kennst du? Wenn nicht hier ein Tipp: Modulo-Divisionen geben den Rest zurück (Operator: %)

Dann versuch dich mal und wenn du willst kannst du deinen Code ja posten dann guck ich mal drüber ob er soweit richtig ist 

gruß
zcei


----------



## GTA 3 (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Den euklid. Agoryth. kenn ich nicht.. danke ich probiers mal und schreib den Code dann hier auf!


----------



## GTA 3 (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

So hier mein QT, 



> public class BedingungsschleifeIII{
> 
> 
> 
> ...



Aber irgendwie funktioniert der QT nicht ganz : 

Zwar zeigt es mir dann an das Der ggT von 15 und 6 ist: 3 ist aber wenn ich dann 6:3 eingeb kommt dann diese Fehlermeldung:

java.lang.ArithmeticException: / by zero
	at BedingungsschleifeIII.getggT2(BedingungsschleifeIII.java:32)

und ihm Quelltext markiert er mir dann die Stelle wo anscheinend das Problem liegt (im while das r = n%m

ach ja der gleiche Fehler kommt auch bei Null obwohl da eigentlich FEHLER!!! herausgegeben werden soll... 

EDIT: vom  public void getggT2 nicht iritierren lassen probier noch nach anderen wegen...


----------



## zcei (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Also erst einmal würde ich dich bitten deinen Code einzurücken 

Und dann hab ich noch fragen 

zB warum du am Anfang alles per && überprüfen lässt, warum du nich n und m umdrehst wenn n kleiner m ist und warum r <= 0 die Laufbedingung ist.


----------



## GTA 3 (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Ich ja ich muss es so schreiben, dass es überprüft das die eingegebenen Zahlen größer Null sein sollen wenn nicht dann Ausgabe Fehler! und das n größer ist als m! Und das war eingerückt aber irgendwie wird das hier im Forum automatisch zurück gerückt! 

EDIT: r <= 0 ups mein fehler sollte eigentlioch r != 0 sein.


----------



## zcei (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

also bei mir rückt er ein 

Was ist denn genau die Zeile 32, denn da scheint ja der Fehler zu liegen

/ by zero ist ein "Division by Zero" Error, heißt, dass versucht wird irgendwas durch 0 zu teilen^^


----------



## GTA 3 (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Ich komm leider nicht drauf wie ich das jetzt beheben soll


----------



## zcei (27. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*



			
				zcei;2440061[... schrieb:
			
		

> Was ist denn genau die Zeile 32, denn da scheint ja der Fehler zu liegen
> [...]



Wenn du mir das lieferst kann ich dir auch helfen  denn meistens kann man den Fehler dann einschränken. Bei dem was du nämlich jetzt hast kommt er nur wenn r = 0 ist, was ja bei <= 0 durchaus passieren kann.

Am besten einfach mal den kompletten nicht funktionierenden Quelltext posten und zeile 32 hervorheben


----------



## UnnerveD (28. November 2010)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Also - Division bei Zero bekommst du in deinem Beispiel einfach deswegen, weil der Rest von 6 und 3 = 0 ist und in deiner while-Bedingung



> while (r<=0)


steht (was ja bereits erwähnt wurde).
Wenn du das entsprechend zu 



> while (r<=0)


Abänderst bist du auf dem richtigen Weg.

Dann taucht allerdings ein neues (ein mathematisches) Problem auf, denn:



> else
> {
> *int r = (n%m); -> int r = (6%3); -> r = 0*
> while (r!=0)  // wird von hier
> ...


Was du brauchst ist also ein Zwischenschritt, der dir noch den richtigen Teiler angibt:



> else{
> int r = (n%m);
> while (r<=0){
> 
> ...


Ich habe es jetzt nicht extra getestet, aber sollte die Müdigkeit mir nicht vollends den Rest gegeben habe, dürfte das die Lösung sein.

MfG


----------



## GTA 3 (20. Januar 2011)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Hallo ich bin es wieder. Ich wiederhol grad ein bischen den Anfangstoff und bin jetzt glaub ich bei einem Anfängerproblem stehen geblieben! Hier erstmal mein Code.



> public class BierLied{
> public static void main (String[] args){
> int bieranzahl = 99;
> String wort = "Flaschen";
> ...


Code funktioniert einwandfrei, problem ist nur das er anfängt erst ab 11 Flaschen runterzuzählen obwohl ich den Wert 99 angegeben habe. Wo hackts ?! 

MFG


----------



## bingo88 (21. Januar 2011)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Der Code funktioniert bei mir einwandfrei?


----------



## GTA 3 (22. Januar 2011)

*AW: Problem beim Javaprogrammierung (Anfänger)*

Dann müsste es an BlueJ liegen! Der fängt erst ab 11 an aber im Debbuger funktioniert er. Hat sich geklärt! Danke.


----------

