JOptionPane - кнопки перезапуска программы и выхода - Java

Узнай цену своей работы

Формулировка задачи:

Дорогие! Подскажите пожалуйста новичку, как сделать 2 кнопки,в последнем итоговом окне программы,одна из которых начинает программу сначала, а другая выходит из неё,заранее спасибо!Буду рад любым объяснениям и помощи!
import javax.swing.*;
 
public class proverka extends JPanel{

    public proverka() {
         double skidkasled;
         double vozvratsred;
         double vozvrattek;

    JOptionPane jop = new JOptionPane();
    
    JFrame frame = new JFrame();
    Object nasvA = JOptionPane.showInputDialog(frame, "Введите название фирмы клиента", "Рассчет скидки v1.0 Вавилон", JOptionPane.PLAIN_MESSAGE);
    
    String skidA = JOptionPane.showInputDialog("Введите скидку на следующий месяц");
    skidkasled = Double.parseDouble(skidA);
 
    String vozsA = JOptionPane.showInputDialog("Введите cредний процент возврата");
    vozvratsred = Double.parseDouble(vozsA);
 
    String voztA = JOptionPane.showInputDialog("Введите процент возврата за текущий месяц");
    vozvrattek = Double.parseDouble(voztA);
 
    double plusskidka;
    plusskidka = 0;
    if (vozvratsred - vozvrattek < 0)
        jop.showMessageDialog(null,"Извините скидка не предусматривается");
    
    //Если  скидка на следующий месяц от 19-21%//
    if (19 < skidkasled && skidkasled < 21)
    {
        if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.3; 
        if(2.6 <= vozvratsred && vozvratsred <= 8)  plusskidka = (vozvratsred - vozvrattek) / 1.4;
        if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 3;
        if(15.1 <= vozvratsred && vozvratsred <=300) plusskidka = (vozvratsred - vozvrattek) / 5;
    }
 
    //Если  скидка на следующий месяц от 21.1-24%//
 
    else if (21.1 < skidkasled && skidkasled<=24 )
        {if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.2;
         if(2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.6;
         if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 4;
         if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 6;
         }
   
    //Если  скидка на следующий месяц от 24.1-27%//
 
    else if (24.1 <= skidkasled && skidkasled <= 27)
        {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.1;
        if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.8;
        if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 5;
        if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 8;
        }
 
    //Если  скидка на следующий месяц от 27.1-30%//
    else if (27.1 <= skidkasled && skidkasled <= 30)
    {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 0.9;
    if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 2;
    if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 8;
    if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 10;
    }
 
    double oborotsred;
    double oborottek;
    
    String oborotsA = JOptionPane.showInputDialog("Введите средний оборот денежных средств");
    oborotsred = Double.parseDouble(oborotsA);
    
    String oborottA = JOptionPane.showInputDialog("Введите текущий оборот денежных средств");
    oborottek = Double.parseDouble(oborottA);
    
    double finalskidka;
    finalskidka=0;

    if (0 <= oborottek / oborotsred && oborottek / oborotsred <= 1)
        finalskidka = plusskidka * oborottek / oborotsred;
    
    if (1.1 <= oborottek / oborotsred && oborottek / oborotsred <= 1.2) 
     finalskidka = plusskidka * ((oborottek / oborotsred) - 0.1);
    
    if (1.21 <= oborottek / oborotsred && oborottek / oborotsred <= 1.5) 
       finalskidka = plusskidka + ((oborottek / oborotsred) - 0.8);
    
    if (1.6 <= oborottek / oborotsred && oborottek / oborotsred <= 10) 
        finalskidka = plusskidka + ((oborottek / oborotsred) - 1);

    if (finalskidka+skidkasled<=33) {
    jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
            "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"\n Дополнительная скидка на следующий месяц для фирмы " + 
    nasvA + " составляет  " + finalskidka+ "\n Итоговая скидка составляет "+ (finalskidka+skidkasled));
   
    }else
    {jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
            "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"Дополнительная скидка на следующий месяц для фирмы " + 
    nasvA + " составляет " + finalskidka+ "\n"+"\n"+"\n Извините, но максимально возможная итоговая скидка равна 33%");
 
    }
 
    }
 
    public static void main(String[] args){
       SwingUtilities.invokeLater(new Runnable() {
        public void run() {
        new proverka();
        }
       });
       
}
 
}

Решение задачи: «JOptionPane - кнопки перезапуска программы и выхода»

textual
Листинг программы
package proverka;
 
import java.awt.Component;
import javax.swing.*;
 
public class Proverka extends JPanel {
    
    private int showResetDialog(Component parentComponent) {
        return JOptionPane.showConfirmDialog(parentComponent, "Начать снова?", 
                "", JOptionPane.YES_NO_OPTION);
    }
        
    public Proverka() {
         double skidkasled;
         double vozvratsred;
         double vozvrattek;
         
        int reset = JOptionPane.YES_OPTION; 
         
         while ( reset == JOptionPane.YES_OPTION ) {
            JOptionPane jop = new JOptionPane();
    
            JFrame frame = new JFrame();
            Object nasvA = JOptionPane.showInputDialog(frame, "Введите название фирмы клиента", "Рассчет скидки v1.0 Вавилон", JOptionPane.PLAIN_MESSAGE);
 
            String skidA = JOptionPane.showInputDialog("Введите скидку на следующий месяц");
            skidkasled = Double.parseDouble(skidA);
 
            String vozsA = JOptionPane.showInputDialog("Введите cредний процент возврата");
            vozvratsred = Double.parseDouble(vozsA);
 
            String voztA = JOptionPane.showInputDialog("Введите процент возврата за текущий месяц");
            vozvrattek = Double.parseDouble(voztA);
 
            double plusskidka;
            plusskidka = 0;
            if (vozvratsred - vozvrattek < 0) {
                jop.showMessageDialog(null,"Извините скидка не предусматривается");
                reset = showResetDialog(frame);
                continue;
            }
                
 
            //Если  скидка на следующий месяц от 19-21%//
            if (19 < skidkasled && skidkasled < 21)
            {
                if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.3; 
                if(2.6 <= vozvratsred && vozvratsred <= 8)  plusskidka = (vozvratsred - vozvrattek) / 1.4;
                if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 3;
                if(15.1 <= vozvratsred && vozvratsred <=300) plusskidka = (vozvratsred - vozvrattek) / 5;
            }
 
            //Если  скидка на следующий месяц от 21.1-24%//
 
            else if (21.1 < skidkasled && skidkasled<=24 )
                {if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.2;
                 if(2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.6;
                 if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 4;
                 if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 6;
                 }
 
            //Если  скидка на следующий месяц от 24.1-27%//
 
            else if (24.1 <= skidkasled && skidkasled <= 27)
                {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.1;
                if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.8;
                if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 5;
                if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 8;
                }
 
            //Если  скидка на следующий месяц от 27.1-30%//
            else if (27.1 <= skidkasled && skidkasled <= 30)
            {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 0.9;
            if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 2;
            if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 8;
            if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 10;
            }
 
            double oborotsred;
            double oborottek;
 
            String oborotsA = JOptionPane.showInputDialog("Введите средний оборот денежных средств");
            oborotsred = Double.parseDouble(oborotsA);
 
            String oborottA = JOptionPane.showInputDialog("Введите текущий оборот денежных средств");
            oborottek = Double.parseDouble(oborottA);
 
            double finalskidka;
            finalskidka=0;
 
 
            if (0 <= oborottek / oborotsred && oborottek / oborotsred <= 1)
                finalskidka = plusskidka * oborottek / oborotsred;
 
            if (1.1 <= oborottek / oborotsred && oborottek / oborotsred <= 1.2) 
             finalskidka = plusskidka * ((oborottek / oborotsred) - 0.1);
 
            if (1.21 <= oborottek / oborotsred && oborottek / oborotsred <= 1.5) 
               finalskidka = plusskidka + ((oborottek / oborotsred) - 0.8);
 
            if (1.6 <= oborottek / oborotsred && oborottek / oborotsred <= 10) 
                finalskidka = plusskidka + ((oborottek / oborotsred) - 1);
 
 
 
            if (finalskidka+skidkasled<=33) {
            jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
                    "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"\n Дополнительная скидка на следующий месяц для фирмы " + 
            nasvA + " составляет  " + finalskidka+ "\n Итоговая скидка составляет "+ (finalskidka+skidkasled));
 
            }else
            {jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
                    "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"Дополнительная скидка на следующий месяц для фирмы " + 
            nasvA + " составляет " + finalskidka+ "\n"+"\n"+"\n Извините, но максимально возможная итоговая скидка равна 33%");
 
            }
            
            reset = showResetDialog(frame);
         }
    }
 
    public static void main(String[] args){
       SwingUtilities.invokeLater(new Runnable() {
        public void run() {
        new Proverka();
        }
       });
       
}
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы