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
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);
}
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 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!
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
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.