Переменная на JOption отображается 2 раза - PullRequest
0 голосов
/ 19 октября 2018

Я хочу отобразить переменную toPay в последней части.

Пример Я ввел 0 в переменную toPay, и после этого он снова вызовет main (args), а затем я собираюсь ввести 4, но на выходе получится

JOption "To Pay: 28"это правильно, но после того, как я закрываю JOptionpane, снова всплывает что-то, и он говорит JOption «To Pay 0»

package Payphone;

import java.util.Scanner;
import javax.swing.*;
public class Try {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int toPay=0;

    int n = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter calltime"));
    if (n<=0) {
        toPay = 0;
    JOptionPane.showMessageDialog(null,"Error!");
    Try.main(args);

    }else if (n<=3){
        toPay =20;
    }else{
       toPay =n - 3;
       toPay =(toPay*3)+20;
    }
    JOptionPane.showMessageDialog(null,"Babayadan mo: "+toPay,"PAYCHECK",JOptionPane.PLAIN_MESSAGE);
}
}

1 Ответ

0 голосов
/ 21 октября 2018

Эта ошибка возникает из-за того, что вы снова вызываете свою программу в этот момент Try.main(args);, поэтому при возникновении ошибки вы устанавливаете toPay = 0;, затем вы видите сообщение об ошибке, но ваша последняя строка снова вызывает JOptionPane, поэтому после выполненияЕсли правильно создать первую панель JOptionPane, программа все равно выполнит последнюю панель JOptionPane и покажет вам «Babayadan mo: 0».

Чтобы исправить эту ситуацию, вы должны завершить свою программу или сделать что-то вроде этого:

import javax.swing.JOptionPane;

public class Try {

    private static int n;

    public static void main(String[] args) {
        babayadan();
    }

    public static void restart() {
        JOptionPane.showMessageDialog(null, "Error!");
        n = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter calltime"));
    }

    public static void babayadan() {
        n = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter calltime"));

        while(n <= 0) {
            restart();
        }

        int toPay = 0;
        if (n <= 3){
            toPay = 20;
        }else {
            toPay = n - 3;
            toPay =(toPay * 3) + 20;
        }
        JOptionPane.showMessageDialog(null, "Babayadan mo: " + toPay, "PAYCHECK", JOptionPane.PLAIN_MESSAGE);
    }
}
...