Niedawno zacząłem zabawę w programowanie w javie. Chcę napisać program skanujący polecenie z konsoli i wyświetlający odpowiednie okno tekstowe w zależności od wpisanego polecenia. Natrafiłem jednak na problem, gdy wpisuje polecenie NowyZysk program się zawiesza, czy byłby ktoś w stanie wskazać mi gdzie popełniłem błąd w programie.
import javax.swing.*;
import java.util.Scanner;
class Wczytaj {
private String nazwaOkna;
private String przedTekstowym;
private Double[] wCoWczytac;
public Wczytaj(String nazwaOkna, String przedTekstowym, Double[] wCoWczytac) {
this.nazwaOkna = nazwaOkna;
this.przedTekstowym = przedTekstowym;
this.wCoWczytac = wCoWczytac;
}
public void wczytaj() {
JFrame frame = new JFrame("Okno");
JTextField textField = new JTextField(20);
JPanel panel = new JPanel();
panel.add(new JLabel(przedTekstowym));
panel.add(textField);
int result = JOptionPane.showConfirmDialog(
frame,
panel,
nazwaOkna,
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE
);
if (result == JOptionPane.OK_OPTION) {
String enteredText = textField.getText();
try {
wCoWczytac[0] = Double.parseDouble(enteredText);
} catch (NumberFormatException e) {
System.out.println("Błąd konwersji: " + e.getMessage());
}
}
frame.dispose();
}
}
public class StayGreen {
public static void main(String[] args) {
String p;
while (true) {
p = polecenie();
if (p.equals("Koniec")) {
System.out.println("Kończymy.");
break;
}
if (p.equals("NowyZysk")) {
Double[] nzysk = {0.0};
Wczytaj zysk = new Wczytaj("Nowy zysk", "Podaj zysk: ", nzysk);
zysk.wczytaj();
System.out.println("Nowy zysk: " + nzysk[0]);
}
}
}
public static String polecenie() {
Scanner scan = new Scanner(System.in);
System.out.println("Czekam na polecenie (Bilans/NowyZysk/NowaStrata/Koniec)");
return scan.next();
}
}