Erste Schritte for & while Schleife Wert abzählen

stefani

Mitglied
Hallo,

Ich brauche dringend Euere Hilfe und zwar eine 2 Schleifen FOR und WHILE, IF Schleife
die der Wert 120 in vier Schritten abzählt.
also 120:4 = 30
sozusagen in jeder Schritt sollte 30 reduziert werden.

Danke
 

stefani

Mitglied
Danke für die Antwort mein Versuch:

Code:
public class forSchleifeabZaehlen{
	public static void main (String[]args){
		for(int i =1; i >= 120; i+=30){
			System.out.println(i);
		}
		
	}
}
 
S

SlaterB

Gast
das widerspricht ja schon jedem Buchbeispiel, etwa
for ( int i = 1; i <= 10; i++ ) // i ist Schleifenzähler
System.out.println( i );
aus meinem Link, <= ist was anderes als >=

wenn runtergezählt wird ist >= natürlich nicht schlecht, dann aber auch hoch anfangen und absenken statt dazuaddieren
 

stefani

Mitglied
Ich habe das selbst ohne Buch gemacht... schaue ich mir jetzt das Beispiel im Buch an. Danke Dir. Melde mich vielleicht noch mal ;-)
 

stefani

Mitglied
So habe ich es mit ForSchleife gemacht:


Java:
for(int i =0; i <= 120; i+=30){
			System.out.println(i);
		}

Ausgabe:
0
30
60
90
120

Wie kann ich "0" eleminieren? Also es soll mit 30 losgehen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
falls allgemein mit Variablen usw. gelöst bekommt man den erhöhten Startwert sicher auch hin,
aber dann gäbe es noch eine if-Abfrage in der Schleife
 

stefani

Mitglied
vielen Lieben Dank! ich habe soweit hin bekommen:

Eine Weitere Frage die mir gerade Kopfschmerzen bereitet:


Ein Kommilitone hat in seinem Nebenjob 2500 € verdient. Er bietet an, Ihnen die
Hälfte abzugeben, und benutzt dabei folgende Berechnung. Wie viel bekommen Sie?
int haelfte = 2500 * (1/2);

Nachdem ich das Programm geschrieben und getestet habe und mit der Prof. Lösung verglichen habe, war alles richtig. Die frage WARUM LIEFERT das Programm 0!!!!!!!!!:rtfm::autsch:???:L
 

stefani

Mitglied
War schon Hilfsreich. Danke
Rest habe ich halbwegs verstanden. Nun verstehe folgende Lösungen nicht:

1 / 2 * 2.0 = 0.0

1.0 / 2 * 2 = 1.0
1.0 / (2 * 2) = 0.25
 
Zuletzt bearbeitet:

pro2

Bekanntes Mitglied
Code:
1 / 2 * 2.0 = 0.0
Erst 1/2, was wieder 0 ergibt wegen des Rundens, also 0*2=0
Code:
1.0 / 2 * 2 = 1.0
Weil ja dann wieder eine Kommazahl vorhanden ist, nämlich 1.0, kommt er bei 1.0/2 auch auf 0.5*2 = 1
Code:
1.0 / (2 * 2) = 0.25
Gleiches wie oben.. 1.0/4 = 0.25
 

pro2

Bekanntes Mitglied
Gehs doch einfach durch, kennst die Regeln doch jetzt ;-)

Code:
(7*10 / (5*4 - 1/(4*6)));
(7*10 / (5*4 - 1/24));
(70 / (20 - 1/24));
(70 / (20 - 0)); //Da ja 1/24 <1 und damit abgerundet auf 0
(70 / 20) = 3; //Da 70/20 = 3.5, abgerundet = 3

Korrekt könnte man also sagen (7*10.0 / (5*4.0 - 1/(4*6.0)));
 

stefani

Mitglied
Vielen Vielen Dank!!!
Ich möchte nicht meine ganze Aufgaben hier besprechen:noe: nur eine letzte Frage bitte:
Folgende Schleife sollte in eine do und while Schleife umgewandelt werden,

Java:
int x,s=0;
for(; ;){
x= sc.nextInt();
 if (x<0)
break;
s+=x;
}


so ist die Lösung:
Java:
while-Schleife:

    int x, s = 0;
    x = sc.nextInt();
    while (x >= 0){
        s += x;
        x = sc.nextInt();
    }
   
 
do-Schleife:

    int x, s = 0;
    do {
        x = sc.nextInt();
        if (x >= 0) 
            s += x; 
    } while (x >= 0);

Meine Frage
warum ist BREAK; verschwunden???
und warum steht auf einmal x>=0??? in der Aufgabe steht x<0??
und warum bleibt bei do-Schleife : if (x >= 0) stehen????

Danke
 
Zuletzt bearbeitet:
S

SlaterB

Gast
alles beschreibt dasselbe nur eben mit anderen Worten

entweder steckt die Bedingung im Schleifenkörper oder in einem if darin,
entweder fragt man ob man noch drin bleiben oder abbrechen soll, was offensichtlich das gegengesetze ist (>= 0 und < 0 sind entgegengesetzt)
 
S

SlaterB

Gast
gleichzeitig verändert sich die doch die Bedeutung, was passiert jeweils nach Erfüllung der Bedingung?

"wenn Temperatur > 50 Grad dann ICE explodiert"
ist gleichbedeutend zu
"wenn Temperatur <= 50 Grad dann ICE fährt noch normal mit Verspätung"

> und warum bleibt bei do-Schleife : if (x >= 0) stehen????
lass es doch einfach weg und schaue wie sich dann das Programm ändert,
auch die Anordnung der Befehle spielt eine Rolle, der Abbruch muss vor der Addition getestet werden
 
Zuletzt bearbeitet von einem Moderator:

stefani

Mitglied
Vielen Dank!
Folgenden Code zur Bestimmung von max, min, mittel:
Java:
public static void main(String[] args) {
	
		// Deklaration der Variablen
		int[] zahlen;
		int anzahl;
		int max, min, summe;
		double mittel;
		
		// Anzahl der einzulesenden Zahlen bestimmen
		anzahl = Tastatur.liesInt("Wie viele Zahlen moechten Sie eingeben? ");
		while (anzahl <= 0)
			anzahl = Tastatur.liesInt("Bitte geben Sie einen Wert > 0 an: ");
			
		// Zahlen einlesen
		zahlen = new int[anzahl];
		System.out.println("Bitte geben Sie " + anzahl + " ganze Zahlen ein.");
		for (int i=0; i<anzahl; i++)
			zahlen[i] = Tastatur.liesInt("Die " + (i+1) + ". Zahl: ");
		
		// Zahlen ausgeben
		System.out.println();
		System.out.println("Sie haben folgende Zahlen eingegeben: ");
		for (int i=0; i<anzahl; i++)
			System.out.print(zahlen[i] + "  ");
		System.out.println();
		
		// Bestimmung von Maximum, Minimum, Summe, Mittelwert
		max = zahlen[0];
		min = zahlen[0];
		summe = zahlen[0];
		[B]for (int i = 1; i<anzahl; i++) {[/B]			if (max < zahlen[i])
				max = zahlen[i];
			if (min > zahlen[i])
				min = zahlen[i];
			summe += zahlen[i];
		}
		mittel = (double)summe / anzahl;
		
		// Ausgabe von Maximum, Minimum, Summe und Mittelwert
		System.out.println();
		System.out.println("Größte Zahl:   " + max);
		System.out.println("Kleinste Zahl: " + min);
		System.out.println("Summe:         " + summe);
		System.out.println("Mittelwert:    " + mittel);

Frage:
Warum fängt die for schleife mit dem Index1:
Java:
for (int i = 1; i<anzahl; i++) ??

die Array-Elemente fangen doch von Null an und nach meinem Verständnis befinden sich die Elemente auch in index NULL.
ErklärungEs heisst die Variable max wird die die Array zahlen zugewiesen diese hat die länge NULL richtig??????
Java:
max = zahlen[0];
		min = zahlen[0];
		summe = zahlen[0];


Irgendwie komme ich damit nicht klar???:L
 
Zuletzt bearbeitet:

Meierhof

Mitglied
Hallo,

hier soll der größte und der kleinste Wert in einem Array gefunden werden und daraus eine Summe gebildet werden.

Bevor hierbei in der for-Schleife das Array elementweise durchgeprüft wird, erfolgt folgendes:
[Java]max = zahlen[0];
min = zahlen[0];
summe = zahlen[0];[/Java]

Hier wird einfach der Variablen max (analog mit min) das erste Element aus dem Array 'zahlen' zugewiesen.
Wenn anschließend die Schleife durchlaufen wird, wird für jedes weitere Element im Array geprüft, ob es größer ist, als der aktuelle Inhalt in der Variablen max. Ist dies der Fall, so wird das größere Element in der variablen max gespeichert, ist das geprüfte Element kleiner als der Inhalt von max, passiert sozusagen nichts und die Schleife wird weiter druchlaufen.
Da in max und min ja bereits das erste Array-Element gespeichert ist, fängt die Schleife eben erst beim zweiten Array-Element an.

Bsp.:
zahlen = {3,2,9,8};

max = zahlen[0] --> max = 3;

Schleife:
Wenn zahlen[1] > max, dann max = zahlen[1] --> Wenn 2 > 3, nicht erfüllt
Wenn zahlen[2] > max, dann max = zahlen[2] --> Wenn 9 > 3, erfüllt, also ist max nun 9
usw.
 

Neue Themen


Oben