Rechnung

L

Livius

Gast
Hallo zusammen,

Finde das Java interessant ist, jedoch kenn ich mich zuwenig damit aus, bin basics am lernen, zu dem hab ich ein kleines Problem.
Im folgenden code, wird ein Resultat ausgegeben jedoch kann ich nicht ganz nachvollziehen wie das berechnet wird.
Die Berechnung geht durch Variablen, Werte und Arrays, es ist nicht leicht eine fromel aus deisen Elementen zu erstellen, habs mir mehrmals angesehen?

Java:
public class Puzzle4
{
  public static void main(String[] args)
{
    Puzzle4b[] obs = new Puzzle4b[6];
    int y = 1;
    int x = 0;
    int erg = 0;
    while (x<6)
{
     obs[x] = new Puzzle4b(); 
     obs[x].ivar=y; 
     y=y*10;
     x=x+1;
}
    x=6;
    while (x>0)
{
     x=x-1;
     erg = erg + obs[x].machZeug(x);
}
    System.out.println("Ergebnis " + erg);
}
}
class Puzzle4b
{
  int ivar;
  public int machZeug(int faktor)
{
    if (ivar>100)
{
      return ivar*faktor;
}
      else
{
        return ivar*(5-faktor);
}
}
}

Vielen Dank
L.
 

jgh

Top Contributor
Java:
public class Puzzle4 {
	public static void main(String[] args) {
		Puzzle4b[] obs = new Puzzle4b[6];
		int y = 1;
		int x = 0;
		int erg = 0;
		while (x < 6) {
			System.out.println("1. while-Schleife in main: x=" + x + " y=" + y);
			obs[x] = new Puzzle4b();
			obs[x].ivar = y;

			y = y * 10;
			x = x + 1;
			System.out.println("\t x=" + x + " y=" + y);
		}
		x = 6;
		while (x > 0) {
			System.out.println("2. while-Schleife in main: x=" + x + " y=" + y);
			x = x - 1;
			erg = erg + obs[x].machZeug(x);
			System.out.println("\tErgebnis =" + erg);
		}
		System.out.println("Ergebnis " + erg);
	}
}

class Puzzle4b {
	int ivar;

	public int machZeug(int faktor) {
		if (ivar > 100) {
			System.out.println("\t\tPuzzle4b if-Zweig return-Wert:"
					+ (ivar * faktor));
			return ivar * faktor;
		} else {
			System.out.println("\t\tPuzzle4b else-Zweig return-Wert:" + ivar
					* (5 - faktor));

			return ivar * (5 - faktor);
		}
	}
}

[XML]1. while-Schleife in main: x=0 y=1
x=1 y=10
1. while-Schleife in main: x=1 y=10
x=2 y=100
1. while-Schleife in main: x=2 y=100
x=3 y=1000
1. while-Schleife in main: x=3 y=1000
x=4 y=10000
1. while-Schleife in main: x=4 y=10000
x=5 y=100000
1. while-Schleife in main: x=5 y=100000
x=6 y=1000000
2. while-Schleife in main: x=6 y=1000000
Puzzle4b if-Zweig return-Wert:500000
Ergebnis =500000
2. while-Schleife in main: x=5 y=1000000
Puzzle4b if-Zweig return-Wert:40000
Ergebnis =540000
2. while-Schleife in main: x=4 y=1000000
Puzzle4b if-Zweig return-Wert:3000
Ergebnis =543000
2. while-Schleife in main: x=3 y=1000000
Puzzle4b else-Zweig return-Wert:300
Ergebnis =543300
2. while-Schleife in main: x=2 y=1000000
Puzzle4b else-Zweig return-Wert:40
Ergebnis =543340
2. while-Schleife in main: x=1 y=1000000
Puzzle4b else-Zweig return-Wert:5
Ergebnis =543345
Ergebnis 543345
[/XML]
 
L

Livius

Gast
Vielen Dank, für die Erklärung, gute Sache mit dem "System.out.println".
Irgendwie versuche ich noch zu verstehen, wie die Werte von Faktor und ivar sich verändern das find ich nicht so transparent.
Die Aufgabe aus dem Buch bestand darin, den code aus schnipseln zusammenzustellen, um das vorgezeigte Resultat zu erhalten, denke das muss man von Hand machen ohne compiler?

Danke schön
L.
 
S

suchenda

Gast
ertgklär doch mal, was es mit machZeug() auf sich hat, das versteh ich nicht nicht - oder die idee des ganzen. los.
 

T7V

Aktives Mitglied
Hey, ein anderer hat bei fast genau demselben Programm nachgefragt.
Hier meine Antwort von eben:
In der ersten while Schleife

Java:
while (x < 6) {
  obs[x] = new Puzzle4b();      //hier Erstellen
  obs[x].ivar = y;                   
  y = y * 10;
  x = x + 1;
}

werden neue Objekte von Puzzle4b erstellt und ihr Attribut wird initialisiert.
Am Ende der ersten Schleife hast du dann:

obs[0] -> obs[0].ivar =1
obs[1] -> obs[1].ivar =10
obs[2] -> obs[2].ivar =100
obs[3] -> obs[3].ivar =1000
obs[4] -> obs[4].ivar =10000
obs[5] -> obs[5].ivar =100000

Dann wird x = 6;
In der zweiten Schleife wird dann erst x verringert und dann wird die Methode
Java:
public int doStuff(int factor) {...}
so aufgerufen:
Java:
obs[x].doStuff(x) //Zeile 16

Gerechnet wird :
Java:
result = result + obs[x].doStuff(x);
Dies sieht dann so aus:

x=5 : result = 0 (result) + 500000 (5 * obs[5].ivar ,da ivar >100)
x=4 : result = 500000 + 40000 (4 * obs[4].ivar ,da ivar >100)
x=3 : result = 540000 + 3000 (3 * obs[3].ivar ,da ivar >100)
x=2 : result = 543000 + 300 (obs[2].ivar* 5 - 2 ,da ivar <= 100)
x=1 : result = 543300 + 40 (obs[1].ivar* 5 - 1 ,da ivar <= 100)
x=0 : result = 543340 + 5 (obs[0].ivar* 5 - 0 ,da ivar <= 100)

Nach der while-Schleife: result = 543345.;)

Noch Fragen?

PS: erg = result
machZeug= doStuff
 
L

Livius

Gast
Vielen Dank für das Aufzeigen.
Die Aufgabe war der Übung wegen. Die Einrückung werde ich korrigieren von nun an.

Sieht aus als bei der Methode "machZeug()" , "ivar" von dem objekt "obs[x]" referenziert wird "obs[x].ivar" wobei "[x]" gleich "faktor" ist. In der methode wird herunter gezählt und der "faktor" "[x]" bezieht sich auf die Position der ersten Whileschleife.

Aber irgendwie frage ich mich wie sich "ivar" verhält, den Wert ">100" und "<100" sehe ich nicht?

Klasse Erklärung, Danke.

Übe mal weiter.
L.
 

T7V

Aktives Mitglied
Steht hier in der Methode von Puzzle4b:

Java:
public int machZeug(int faktor) {
        if (ivar > 100) {
            System.out.println("\t\tPuzzle4b if-Zweig return-Wert:"
                    + (ivar * faktor));
            return ivar * faktor;
        } else {
            System.out.println("\t\tPuzzle4b else-Zweig return-Wert:" + ivar
                    * (5 - faktor));
 
            return ivar * (5 - faktor);
        }
es steht nur >100
<=100 wird dann durch else beschrieben
 
L

Livius

Gast
Ja genau, hab es übersehen.
Noch eine Frage, wie ist die Berechnung in dieser Zeile,
x=2 : result = 543000 + 300 (obs[2].ivar* 5 - 2 ,da ivar <= 100)
Wie ist der Wert bei, "obs[2].ivar" das dann mit "5-2" multipliziert wird?

Viele Dank
L.
 
L

Livius

Gast
Nein schon gut, ist ja "5-2 = 3" und "ivar = 100" hmmm.

grünes Dankedanke

schönen Abend
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
L Geteilt Rechnung mit Nachkomma? Java Basics - Anfänger-Themen 4
S Uhrzeit Rechnung Java Basics - Anfänger-Themen 8
3 Taschrechner Rechnung durchführen Java Basics - Anfänger-Themen 8
K Rechnung in Java Java Basics - Anfänger-Themen 6
S Wie Typecaste ich nur das Ergebniss einer Rechnung ? Java Basics - Anfänger-Themen 7
B Rechnung ohne Klammer liefert komisches Ergebniss Java Basics - Anfänger-Themen 3
S Simple Rechnung ist fehlerhaft! Java Basics - Anfänger-Themen 13
M Vektor Rechnung Java Basics - Anfänger-Themen 6
V Erste Schritte Einfache Rechnung mit Exponenten Java Basics - Anfänger-Themen 3
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Variablen Rechenzeichen als Variablen in Rechnung einbinden Java Basics - Anfänger-Themen 4
L Erste Schritte Programm Bestellung/Rechnung addieren Java Basics - Anfänger-Themen 3
M Erste Schritte Nachkommastellen falsch bei Rechnung Java Basics - Anfänger-Themen 3
E Problem mit modulo Rechnung Java Basics - Anfänger-Themen 8
C String Rechnung in Int Java Basics - Anfänger-Themen 8
D Mathematische Rechnung als String Java Basics - Anfänger-Themen 4
K "Simple" Rechnung in Java Java Basics - Anfänger-Themen 3
M Einfache Rechnung(R=U/I) Java Basics - Anfänger-Themen 12
B Rechnung per Hand anders als von Java Java Basics - Anfänger-Themen 6
F Mal rechnung Java Basics - Anfänger-Themen 2
M Normale Rechnung - komisches Ergebnis. Java Basics - Anfänger-Themen 10
truesoul Skalierungs-Rechnung Java Basics - Anfänger-Themen 2
B Frage zu einfacher Rechnung Java Basics - Anfänger-Themen 3
K Kombifeld auswählen, rechnung sofort ausführen Java Basics - Anfänger-Themen 11
G Eingebener Wert nach Rechnung wieder original ausgeben. Java Basics - Anfänger-Themen 6
A Sandhaufen Rechnung mit Schubkarre Java Basics - Anfänger-Themen 9
S Einfache Rechnung mit Schleife Java Basics - Anfänger-Themen 10
F Von int zu double bei einfacher Rechnung Java Basics - Anfänger-Themen 2
D Probleme bei einfacher Rechnung Java Basics - Anfänger-Themen 3
D Rechnung Java Basics - Anfänger-Themen 4
R switch erlaubt keine float/double-Rechnung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben