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

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

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

Дорогие! Подскажите пожалуйста новичку, как сделать 2 кнопки,в последнем итоговом окне программы,одна из которых начинает программу сначала, а другая выходит из неё,заранее спасибо!Буду рад любым объяснениям и помощи!
Листинг программы
  1. import javax.swing.*;
  2. public class proverka extends JPanel{
  3.  
  4. public proverka() {
  5. double skidkasled;
  6. double vozvratsred;
  7. double vozvrattek;
  8.  
  9. JOptionPane jop = new JOptionPane();
  10. JFrame frame = new JFrame();
  11. Object nasvA = JOptionPane.showInputDialog(frame, "Введите название фирмы клиента", "Рассчет скидки v1.0 Вавилон", JOptionPane.PLAIN_MESSAGE);
  12. String skidA = JOptionPane.showInputDialog("Введите скидку на следующий месяц");
  13. skidkasled = Double.parseDouble(skidA);
  14. String vozsA = JOptionPane.showInputDialog("Введите cредний процент возврата");
  15. vozvratsred = Double.parseDouble(vozsA);
  16. String voztA = JOptionPane.showInputDialog("Введите процент возврата за текущий месяц");
  17. vozvrattek = Double.parseDouble(voztA);
  18. double plusskidka;
  19. plusskidka = 0;
  20. if (vozvratsred - vozvrattek < 0)
  21. jop.showMessageDialog(null,"Извините скидка не предусматривается");
  22. //Если скидка на следующий месяц от 19-21%//
  23. if (19 < skidkasled && skidkasled < 21)
  24. {
  25. if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.3;
  26. if(2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.4;
  27. if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 3;
  28. if(15.1 <= vozvratsred && vozvratsred <=300) plusskidka = (vozvratsred - vozvrattek) / 5;
  29. }
  30. //Если скидка на следующий месяц от 21.1-24%//
  31. else if (21.1 < skidkasled && skidkasled<=24 )
  32. {if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.2;
  33. if(2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.6;
  34. if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 4;
  35. if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 6;
  36. }
  37. //Если скидка на следующий месяц от 24.1-27%//
  38. else if (24.1 <= skidkasled && skidkasled <= 27)
  39. {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.1;
  40. if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.8;
  41. if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 5;
  42. if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 8;
  43. }
  44. //Если скидка на следующий месяц от 27.1-30%//
  45. else if (27.1 <= skidkasled && skidkasled <= 30)
  46. {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 0.9;
  47. if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 2;
  48. if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 8;
  49. if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 10;
  50. }
  51. double oborotsred;
  52. double oborottek;
  53. String oborotsA = JOptionPane.showInputDialog("Введите средний оборот денежных средств");
  54. oborotsred = Double.parseDouble(oborotsA);
  55. String oborottA = JOptionPane.showInputDialog("Введите текущий оборот денежных средств");
  56. oborottek = Double.parseDouble(oborottA);
  57. double finalskidka;
  58. finalskidka=0;
  59.  
  60. if (0 <= oborottek / oborotsred && oborottek / oborotsred <= 1)
  61. finalskidka = plusskidka * oborottek / oborotsred;
  62. if (1.1 <= oborottek / oborotsred && oborottek / oborotsred <= 1.2)
  63. finalskidka = plusskidka * ((oborottek / oborotsred) - 0.1);
  64. if (1.21 <= oborottek / oborotsred && oborottek / oborotsred <= 1.5)
  65. finalskidka = plusskidka + ((oborottek / oborotsred) - 0.8);
  66. if (1.6 <= oborottek / oborotsred && oborottek / oborotsred <= 10)
  67. finalskidka = plusskidka + ((oborottek / oborotsred) - 1);
  68.  
  69. if (finalskidka+skidkasled<=33) {
  70. jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
  71. "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"\n Дополнительная скидка на следующий месяц для фирмы " +
  72. nasvA + " составляет " + finalskidka+ "\n Итоговая скидка составляет "+ (finalskidka+skidkasled));
  73. }else
  74. {jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
  75. "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"Дополнительная скидка на следующий месяц для фирмы " +
  76. nasvA + " составляет " + finalskidka+ "\n"+"\n"+"\n Извините, но максимально возможная итоговая скидка равна 33%");
  77. }
  78. }
  79. public static void main(String[] args){
  80. SwingUtilities.invokeLater(new Runnable() {
  81. public void run() {
  82. new proverka();
  83. }
  84. });
  85. }
  86. }

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

textual
Листинг программы
  1. package proverka;
  2.  
  3. import java.awt.Component;
  4. import javax.swing.*;
  5.  
  6. public class Proverka extends JPanel {
  7.    
  8.     private int showResetDialog(Component parentComponent) {
  9.         return JOptionPane.showConfirmDialog(parentComponent, "Начать снова?",
  10.                 "", JOptionPane.YES_NO_OPTION);
  11.     }
  12.        
  13.     public Proverka() {
  14.          double skidkasled;
  15.          double vozvratsred;
  16.          double vozvrattek;
  17.          
  18.         int reset = JOptionPane.YES_OPTION;
  19.          
  20.          while ( reset == JOptionPane.YES_OPTION ) {
  21.             JOptionPane jop = new JOptionPane();
  22.    
  23.             JFrame frame = new JFrame();
  24.             Object nasvA = JOptionPane.showInputDialog(frame, "Введите название фирмы клиента", "Рассчет скидки v1.0 Вавилон", JOptionPane.PLAIN_MESSAGE);
  25.  
  26.             String skidA = JOptionPane.showInputDialog("Введите скидку на следующий месяц");
  27.             skidkasled = Double.parseDouble(skidA);
  28.  
  29.             String vozsA = JOptionPane.showInputDialog("Введите cредний процент возврата");
  30.             vozvratsred = Double.parseDouble(vozsA);
  31.  
  32.             String voztA = JOptionPane.showInputDialog("Введите процент возврата за текущий месяц");
  33.             vozvrattek = Double.parseDouble(voztA);
  34.  
  35.             double plusskidka;
  36.             plusskidka = 0;
  37.             if (vozvratsred - vozvrattek < 0) {
  38.                 jop.showMessageDialog(null,"Извините скидка не предусматривается");
  39.                 reset = showResetDialog(frame);
  40.                 continue;
  41.             }
  42.                
  43.  
  44.             //Если  скидка на следующий месяц от 19-21%//
  45.             if (19 < skidkasled && skidkasled < 21)
  46.             {
  47.                 if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.3;
  48.                 if(2.6 <= vozvratsred && vozvratsred <= 8)  plusskidka = (vozvratsred - vozvrattek) / 1.4;
  49.                 if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 3;
  50.                 if(15.1 <= vozvratsred && vozvratsred <=300) plusskidka = (vozvratsred - vozvrattek) / 5;
  51.             }
  52.  
  53.             //Если  скидка на следующий месяц от 21.1-24%//
  54.  
  55.             else if (21.1 < skidkasled && skidkasled<=24 )
  56.                 {if(0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.2;
  57.                  if(2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.6;
  58.                  if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 4;
  59.                  if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 6;
  60.                  }
  61.  
  62.             //Если  скидка на следующий месяц от 24.1-27%//
  63.  
  64.             else if (24.1 <= skidkasled && skidkasled <= 27)
  65.                 {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 1.1;
  66.                 if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 1.8;
  67.                 if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 5;
  68.                 if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 8;
  69.                 }
  70.  
  71.             //Если  скидка на следующий месяц от 27.1-30%//
  72.             else if (27.1 <= skidkasled && skidkasled <= 30)
  73.             {if (0 <= vozvratsred && vozvratsred <= 2.5) plusskidka = (vozvratsred - vozvrattek) / 0.9;
  74.             if (2.6 <= vozvratsred && vozvratsred <= 8) plusskidka = (vozvratsred - vozvrattek) / 2;
  75.             if(8.1 <= vozvratsred && vozvratsred <= 15) plusskidka = (vozvratsred - vozvrattek) / 8;
  76.             if(15.1 <= vozvratsred && vozvratsred <= 300) plusskidka = (vozvratsred - vozvrattek) / 10;
  77.             }
  78.  
  79.             double oborotsred;
  80.             double oborottek;
  81.  
  82.             String oborotsA = JOptionPane.showInputDialog("Введите средний оборот денежных средств");
  83.             oborotsred = Double.parseDouble(oborotsA);
  84.  
  85.             String oborottA = JOptionPane.showInputDialog("Введите текущий оборот денежных средств");
  86.             oborottek = Double.parseDouble(oborottA);
  87.  
  88.             double finalskidka;
  89.             finalskidka=0;
  90.  
  91.  
  92.             if (0 <= oborottek / oborotsred && oborottek / oborotsred <= 1)
  93.                 finalskidka = plusskidka * oborottek / oborotsred;
  94.  
  95.             if (1.1 <= oborottek / oborotsred && oborottek / oborotsred <= 1.2)
  96.              finalskidka = plusskidka * ((oborottek / oborotsred) - 0.1);
  97.  
  98.             if (1.21 <= oborottek / oborotsred && oborottek / oborotsred <= 1.5)
  99.                finalskidka = plusskidka + ((oborottek / oborotsred) - 0.8);
  100.  
  101.             if (1.6 <= oborottek / oborotsred && oborottek / oborotsred <= 10)
  102.                 finalskidka = plusskidka + ((oborottek / oborotsred) - 1);
  103.  
  104.  
  105.  
  106.             if (finalskidka+skidkasled<=33) {
  107.             jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
  108.                     "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"\n Дополнительная скидка на следующий месяц для фирмы " +
  109.             nasvA + " составляет  " + finalskidka+ "\n Итоговая скидка составляет "+ (finalskidka+skidkasled));
  110.  
  111.             }else
  112.             {jop.showMessageDialog(null,"Исходные данные : \n Название фирмы: "+nasvA+"\n Предварительная скидка на следующий месяц: "+skidkasled+ "\n Средний процент возврата :"+vozvratsred+"\n Процент возврата за текущий месяц: "+vozvrattek+
  113.                     "\n Средний оборот денежных средств: "+oborotsred+"\n Текущий оборот денежных средств:"+oborottek+"\n"+"Дополнительная скидка на следующий месяц для фирмы " +
  114.             nasvA + " составляет " + finalskidka+ "\n"+"\n"+"\n Извините, но максимально возможная итоговая скидка равна 33%");
  115.  
  116.             }
  117.            
  118.             reset = showResetDialog(frame);
  119.          }
  120.     }
  121.  
  122.     public static void main(String[] args){
  123.        SwingUtilities.invokeLater(new Runnable() {
  124.         public void run() {
  125.         new Proverka();
  126.         }
  127.        });
  128.        
  129. }
  130.  
  131. }

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


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

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

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы