webForumDet fria alternativet

hjälp med while

5 svar · 216 visningar · startad av farsta_online

farsta_onlineMedlem sedan jan. 2004106 inlägg
#1

jag vill att mitt program INNAN den gör beräkningen kollar att radien är störreän 0

import javax.swing.*;
import java.text.*;
public class Volym {

	public static void main(String[] args) {
		double volKonstant = (Math.PI * 4)/3;
		double areaKonstant = (Math.PI * 4);
		String indata;
		DecimalFormat df = new DecimalFormat("#.##");
indata = JOptionPane.showInputDialog(null, 
				"Ange radien", "radie", 
				JOptionPane.QUESTION_MESSAGE);
		int radie = Integer.parseInt(indata);
		while (radie <= 0){
			indata = JOptionPane.showInputDialog("Felaktigt värde! Ange ny radie!");
	
		}
		
	double area = areaKonstant * Math.pow(radie, 2);
	double volym = volKonstant * Math.pow(radie, 3);
	System.out.println("Sfärens volym är: " + df.format(volym) + 
		"\n\nSfärens area är: " + df.format(area));
		System.exit(0);
	}
}

När jag anger 0 så kommer fram rutan med "Felaktigt värde! Ange ny radie!". Men när jag sedan skriver in ett värde så kommer hela tiden upp denna ruta ändå...
Programmet verkar ha låst sig

Tacksam för er hjälp
/Peter

juventus1Medlem sedan dec. 2000399 inlägg
#2

Ja, det beror på att radie aldrig ändras mer än en gång. Ändra din loop till:

while (radie <= 0){
   indata = JOptionPane.showInputDialog("Felaktigt värde! Ange ny radie!");
   radie = Integer.parseInt(indata);
}
farsta_onlineMedlem sedan jan. 2004106 inlägg
#3

juventus1 skrev:

Ja, det beror på att radie aldrig ändras mer än en gång.

Och varför skall radien ändras?

Mc FettoMedlem sedan nov. 20022 355 inlägg
#4

Ja, om man nu kommit in i whilesatsen så kan de ju vara bra att ha en möjlighet att komma ur den. Så om man inte tilldelar radie nytt värde i while så kommer den snurra där!

farsta_onlineMedlem sedan jan. 2004106 inlägg
#5

Tack för svaret!

Mc Fetto skrev:

Ja, om man nu kommit in i whilesatsen så kan de ju vara bra att ha en möjlighet att komma ur den. Så om man inte tilldelar radie nytt värde i while så kommer den snurra där!

Ja, tack det märkte jag själv - men varför??

/Peter

UlfTMedlem sedan maj 20018 027 inlägg
#6

farsta_online skrev:

Tack för svaret!

Mc Fetto skrev:

Ja, om man nu kommit in i whilesatsen så kan de ju vara bra att ha en möjlighet att komma ur den. Så om man inte tilldelar radie nytt värde i while så kommer den snurra där!

Ja, tack det märkte jag själv - men varför??

/Peter

Därför att while-satser är tänkta att göra just så. Dvs, gör allt inom while-blocket, medan (while) villkoret stämmer.

125 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)