while.. verwirrt

Sir_Sihou

Mitglied
hallo

also aufgabe ist:


wir kaufen einen gegenstand an einem bestimmten tag --> Startpreis
während der folgenden Tage steigt oder sinkt der Wert.

bei dem Programm, soll der User zuerst den Startpreis abfragen, dann die veränderten werte der folgenden Tage.

Sinkt der wert auf die hälfte des startpreises, bzw steigt er auf das doppelte, bricht das Programm ab. und sagt, dass wir es wieder verkaufen sollen.

je nach wert am letzten tag gibt das programm die höhe des gewinns oder verlusts aus.


ich hab bis jetzt folgendes...jedoch fehlt etwas ganz bestimmtes.. und ich komm einfach nicht drauf :/


Java:
double Kaufpreis, Kurschange, Verlust, Gewinn;      
		
		
		Out.println("Please enter your purchase price ");  
		Kaufpreis = In.readInt();
		
		
	  do{
		
		Out.println("How did your share price change next day? "); 
		Kurschange = In.readInt();
		
		          
	   if(Kurschange <= (Kaufpreis/2.0)){Out.println("You should sell the stock now!"); 
	   Verlust = ((Kaufpreis - Kurschange));
	   Out.println("You've a loss of " + Verlust);

	   break;}
	   
	   else 
		   if (Kurschange >= (Kaufpreis*2.0)) {Out.println("You should sell the stock now!"); 
		   Gewinn = (Kaufpreis - Kurschange);
		   Out.println("You've a profit of " + Gewinn);
		   break;
		   }
			   
			   
		  
	  	  } while (Kurschange != (Kaufpreis*2.0) && Kurschange != (Kaufpreis/2.0));
	  	Out.println("You've spent your whole money, there's  nothing left!");

}
}
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
Was genau fehlt denn deiner Meinung nach? Was läuft nicht so wie du es erwartest?
Auf den ersten Blick ist die Bedingung der Schleife falsch. Du musst die Schleife solange laufen lassen, bis die sich in diesem Bereich befindet. Was du machst, ist einfach nur Grenzwerte abfragen, da müsste also schon irgendwas mit >=, <= auftauchen.

P.S. English sieht zwar immer unheimlich cool aus, aber dann sollte man auch alles in Englisch machen, inkl Variablennamen.
 

Sir_Sihou

Mitglied
ja es funktioniert einfach gar nicht..


er berechnet es nicht richtig, weder dass wenn der kurs auf die hälfte fällt, oder aufs doppelte steigt.

und der wert am letzten tag, funktioniert sowieso nicht..

fehlerdiagnose aaaaaaaaaaaaaah :(
 

XHelp

Top Contributor
Der Wert am letzten Tag?
Im Grunde läuft das ganze auf folgendes hinaus:
Java:
int wert1=20;
int wert2=wert1;
do {
  wert2++;
  System.out.println("Neuer Wert: "+wert2);
} while (wert2<wert1*2);
System.out.println("Endgültiger Wert:" +wert2);
Du musst eben ein Bereich prüfen und nicht nur Grenzwerte
 

Sir_Sihou

Mitglied
ich glaub heut ist nicht mein tag..
^^

warum? ja ich weiß dass mir da noch etwas fehlt, doch nur wohin.. und das was du jetzt geschrieben hast, sind meine werte die für die folgenden tage eingelesen worden sind?

oder wie?
 

XHelp

Top Contributor
Ja, wert1 ist deine ursprüngliche Eingabe. wert2 ist dann jeweils der Wert an folgenden Tagen.
Bei dir funktioniert ja alles, sofern der Wert an irgendeinem Tag GENAU das Doppelte (oder die Hälfte) ist. Du musst aber abfragen, wenn der Wert an einem Tag größer als das Doppelte ist.
 

ARadauer

Top Contributor
ich würd mir auch nochmal eine saubere Einrückung angewöhnen...

Java:
 break;}
       
       else
was? Das ist sehr schwer zu lesen...
 

Sir_Sihou

Mitglied
jetzt bin ich komplett verwirrt..
also wie jetzt


Java:
public static void main(String[] arg) {
	
		
		Out.println("Welcome to a stock exchange quotation program.");   // title of the program
		
		double startprice, coursechange, profit, loss;     
		Out.println("Please enter your purchase price ");  
		startprice = In.readInt();
		int day = 0;
			
		do{	day = day +1;
			Out.println("How did your share price change next day? "); 
			coursechange = In.readInt();          
		if(coursechange <= (startprice/2.0)){Out.println("You should sell the stock now!"); 
		   loss = ((startprice - coursechange));break;
		   Out.println("You've a loss of " + loss); }
		else if (coursechange > (startprice*2.0)) {Out.println("You should sell the stock now!"); 
			profit = (startprice - coursechange);
			Out.println("You've a profit of " + profit);break;}
	  } while (?);
		  	

	}
	}


was gehört dann bei while? mannoo
 

XHelp

Top Contributor
So wie es bei dir aussieht:
Code:
while (true)
Ich dachte aber eher an sowas:
Java:
do{
  Out.println("How did your share price change next day? "); 
  coursechange = In.readInt();          
} while (coursechange > (startprice/2.0) && coursechange < (startprice*2.0));
double difference = startprice - coursechange;
if (difference<0) {
  Out.println("You should sell the stock now!"); 
  Out.println("You've a profit of " + (-difference));
} else {
  Out.println("You should sell the stock now!"); 
  Out.println("You've a loss of " + difference);
}
 

Sir_Sihou

Mitglied
funktioniert aber immer noch nicht.. richtig, wie in der angabe..

ist schon nervig... ich weiß.. aber ich wills ja wirklich lernen. nur funktionierts halt nicht so ganz :/
 

dehlen

Bekanntes Mitglied
es kann doch auch nicht funktionieren... du prüfst nur ob der wert genau das doppelte oder die hälfte ist du musst aber den kompletten bereich abdecken also nicht wann ist es genau die hälfte sondern wann ist es kleiner als die hälfte

und bitte mal nähere beschreibungen
 

Oben