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();
- }
- });
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д