import javax.swing.JOptionPane; // Regner ut omkrets og areal av en eller flere sirkler, // basert på et grafisk brukergrensesnitt public class SirkelGUI3 { public static void main(String[] args) { final double PI = 3.141592654; int valg; // Repeter til brukeren avslutter programmet do { double radius = -1.0; // signaliserer at gyldig verdi ennå ikke er angitt // Repeter til gyldig verdi er angitt while (radius < 0.0) { // Be om radius i en dialogboks String svar = JOptionPane.showInputDialog( null, // foreldre-komponent (ikke angitt) "Hva er sirkelens radius?", // meldingstekst "Inndata", // tittel på vinduet JOptionPane.QUESTION_MESSAGE // meldingstype ); // Avslutt programmet hvis brukeren trykket "cancel" // eller lukker vinduet if (svar == null) System.exit(0); // Konverter svaret til double, sjekk format og verdi try { radius = Double.parseDouble(svar); } catch (NumberFormatException unntak) { JOptionPane.showMessageDialog(null,"Feil tallformat!", "Feil",JOptionPane.ERROR_MESSAGE); continue; } if (radius < 0.0) JOptionPane.showMessageDialog(null,"Radien kan ikke være negativ!", "Feil",JOptionPane.ERROR_MESSAGE); } double omkrets = 2.0*PI*radius; double areal = PI*radius*radius; // Presenter resultat String[] resultat = {"Omkrets: " + omkrets,"Areal: " + areal}; JOptionPane.showMessageDialog( null, resultat, // denne gangen en tabell av strenger "Resultat", JOptionPane.PLAIN_MESSAGE ); // Flere sirkler? Dialogboks // Flere sirkler? Dialogboks // Metoden showOptionDialog() gjør det mulig å bestemme teksten på knappene String[] knapper = {"Ja","Nei"}; valg = JOptionPane.showOptionDialog( null, "Vil du beregne flere sirkler?", "Spørsmål", JOptionPane.YES_NO_OPTION, // opsjonstype JOptionPane.QUESTION_MESSAGE, // beskjedtype null, // ikon (standardikon for beskjedtypen velges) knapper, // svaralternativer (må være 2 tilsv. yes/no) knapper[0] // forvalgt alternativ (ja) ); } while (valg == JOptionPane.YES_OPTION); System.exit(0); // Programmet må avsluttes på denne måten } }