Operatoren inkrement der Division ?

  • Themenstarter Themenstarter Quo
  • Beginndatum Beginndatum
Q

Quo

Gast
Hallo,

Habe einwenig im Internet gesucht, wobei ich nicht viel fand.

Es geht um den Operator der Division, wie könnte man das gleiche erzielen wie [c]i++[/c] z.B. mit [c]i//[/c], wobei das nirgends steht ?

Vielen Dank
Q.
 
Danke für die Antworten.

Das sollte z.B. bewirken, dass die Division mehrmals wiederholt wird.

Java:
for(double i : Liste) {
 double ergebnis = i// hier sollte irgendetwas stehen das die Division wiederholt ?
}

Danke und Frohe Weihnachten
Q.
 
Java:
i++
ersetzt
Java:
i = i + 1

somit wäre

Java:
i//
i**
der ersatz für
Java:
i = i / 1
i = i * 1

i wäre somit immer i
 
Das mit der Zuweisung [c]i = i + 1[/c] hatte ich mir angesehen, wobei ich den Zusammenhang nicht so gesehen.

Im unteren Beispiel,

Java:
for(double i : Liste) {
 double ergebnis /= i  // stimmts so ? hier sollte, wenn die Liste durchlauft wird jedes gefundenes i mit 
                            // dem nächsten i dividiert werden.
}

Werde es so probieren.

Vielen Dank
Q.
 
Java:
i++
ersetzt
Java:
i = i + 1

somit wäre

Java:
i//
i**
der ersatz für
Java:
i = i / 1
i = i * 1

i wäre somit immer i

euch ist aber schon klar das "//" eindeutig für single-line kommentare reserviert ist ... oder ?
und "**" gibt es nicht ...

der grund dafür liegt in der einfachen sache ...

inkrement bzw dekrement ist immer "i + 1" bzw "i - 1" ...

aber bei einer multiplikation oder division würde schlicht der zweite operand fehlen ... den "i * 1" oder "i / 1" haben doch wenig sinn ...

und darum gibt es dafür keien kurzform ... weil es eben mathematisch blödsinn ist und schlicht der zweite operand fehlt ...

@TO
Java:
for(double i : Liste) {
 double ergebnis /= i  // stimmts so ? hier sollte, wenn die Liste durchlauft wird jedes gefundenes i mit 
                            // dem nächsten i dividiert werden.
}
schon mal falsch ... denn "ergebnis" ist nur INNERHALB des for-each bekannt ...
wenn überhaupt dann so
Java:
double ergebnis=0.0d;
for(double i : Liste) {
 ergebnis /= i  // stimmts so ? hier sollte, wenn die Liste durchlauft wird jedes gefundenes i mit 
                            // dem nächsten i dividiert werden.
}
 
boa ... mein gott ... auf die anmerkung wegen des semicolon hättest du echt verzichten können .. ich hab halt einfach den code von TO kopiert und es nicht gesehen das es fehlt ... spätestens der compiler machts klar ...

und ob bei meinem code nun 0.0d rauskommt weil 0/x nun mal 0 bleibt ... ja ... halt nich nach gedacht ... aber im code von TO ist ergebnis auch 0.0d ... denn double wird hier default auch mit 0.0d initliasiert ... das war aber auch weniger sinn meines posts sondern eher der darauf hinzuweisen das wenn man in ergebnis etwas speichern will was mit allen werten zu tun hat dies außerhalb des for-each zu deklarieren ist ...

man kann sich aber auch echt kleinlich haben
 
Danke für die Antworten.

Aber ich habe noch ein paar Fragen, sorry.

Java:
for(double i : Liste) {
 double ergebnis /= i;   
                             
}

Bedeutet dies, dass wenn z.B. die Liste [c][3,6,9,12][/c] beinhaltet.
Java:
ergebnis = 0 ist und durch 3 dividiert wird, dann wieder 0 ergibt und weiter mit 6 usw. dividiert wird ?
Aber dann wäre es immer 0.
Eigentlich wollte ich das alle Werte 3/6/9/12 geteilt werden und so zum Ergebnis führen, aber irgendwie seh ich nicht ganz wie man es umsetzen könnte ?

Vielen Dank für's Verständnis
Q.
 
Hallo,

du kommst nicht drumherum das auszuprobieren ;D

Dann stellst du fest, dass Ergebnis mit 0 initialisierst aber du musst es mit der 3 initialisieren.

Gruß,

Martin
 
was willst du machen?

willst du x durch 4 verschiedene Werte teilen? und 4 Ergebnisse erhalten, oder willst du x 4 mal nacheinander durch 4 Werte teilen und danach ein Ergebnis erhalten?
 
Ja ich wollte ein Ergebnis erhalten, von der Division der in der Liste enthaltenen Werte.

Würde vielleicht funktionieren, müsste es ausprobieren. Momentan habe ich noch anderen Code drin der mir leider wilde Fehlermeldungen bringt.

Trotzdem Vielen Dank

Frohe Festtage
Q.
 
> das gleiche erzielen wie i++ z.B. mit i// ,

Man sollte sich vor Augen führen, warum es i++ eigentlich gibt. Das stammt vom C, welches damals (vielleicht auch heute noch) die Aufabe hatte, quasi als maschinenunabhängiger Assembler zu funktionieren. i++ sagt dem (ggf. nichtoptimierenden) Kompiler, er möge den Increment-Befehl des Prozessors einsetzen und nicht die Arithmetik aufrufen.
Inzwischen habe sich alle Programmerer an diese Schreibweise gewöhnt; so sehr, dass sogar Programmiersprachen danach benannt wurden. Heutzutage könnte man ohne Nachteile auch ausformulieren.
 
@TO
wenn deine liste z.b. 3 6 9 12 enthält ... und du am ende das ergebnis von (3/6/9/12) haben willst ... dann musst du das auch ganz normal ausrechnen

wenn du das mit nem loop machen willst ... hmm .. würde ich es so umsetzen

Java:
double[] list=new double{3.0d, 6.0d, 9.0d, 12.0d};
//...
double ergebnis=list[0];
for(int i=1; i<list.length; i++)
{
	ergebnis/=list[i];
}

ergebnis muss , wie ich schon sagte , defintiv AUßERHALB von for() deklariert werden ...
grund :
1) wenn ergebnis INNERHALB von for() deklariert wird ist es außerhalb nicht mehr sichtbar
2) ergebnis würde bei jedem loop neu mit "0.0d" initialisiert ...

bei der deklaration wird ergebnis außerdem gleich mit dem ersten array-wert initialisiert ...
eine prüfung auf 0.0d kann hier entfallen denn 0.0d/x = 0.0d ... und x/0.0d = ERROR ... ergo : taucht 0.0d als erstes element auf ist das ergebnis 0.0d ... taucht es irgendwo anders ebenfalls auf gibt es einen fehler ...

und dann wird im loop einfach ergebnis durch den aktuellen index beginnend ab 1 geteilt ...

bei 3/6/9/12 kommt 1/216 als ergebnis ... will ich jetzt nicht in dezimal umrechnen ... aber sollte stimmen ...
 

Zurück
Oben