创建根、场景、标题和stage.show()后,Javafx窗口崩溃;

创建根、场景、标题和stage.show()后,Javafx窗口崩溃;,javafx,crash,Javafx,Crash,我正在编写酒店注册代码,我想在javafx窗口中显示可用的房间。这是用爱沙尼亚语写的,但我希望你能理解问题所在。在我添加grouproot=newgroup()之前,一切正常和之后的三行 public class Peaklass extends Application { public static void main(String[] args) { launch(args); } @Override public void start(St

我正在编写酒店注册代码,我想在javafx窗口中显示可用的房间。这是用爱沙尼亚语写的,但我希望你能理解问题所在。在我添加
grouproot=newgroup()之前,一切正常和之后的三行

public class Peaklass extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage pealava) throws IOException, ParseException {
        List<Hotellituba> toad = new ArrayList<>();

        //loeme faili algse sisu listi, et hiljem seda muuta ja uuesti välja kirjutada
        List <String> sisu = new ArrayList<>();

        //loeme failist sisse kõik olemasolevad toad ning koostame neist listi
        try(BufferedReader lugeja = new BufferedReader(new InputStreamReader(new FileInputStream("toad.txt"), "UTF-8"))){
            String rida = lugeja.readLine();
            String[] tükid;
            while(rida!=null){
                tükid = rida.split(",");
                if(Integer.parseInt(tükid[2])>60){
                    toad.add(new Sviit(tükid[0], Integer.parseInt(tükid[1]), Integer.parseInt(tükid[2]),
                            Boolean.parseBoolean(tükid[3]), Boolean.parseBoolean(tükid[4])));
                }
                else{
                    toad.add(new Tavatuba(tükid[0], Integer.parseInt(tükid[1]), Integer.parseInt(tükid[2]),
                            Boolean.parseBoolean(tükid[3]), Boolean.parseBoolean(tükid[4])));
                }
                sisu.add(rida);
                rida = lugeja.readLine();
            }
        }
        System.out.println(toad);
        System.out.println(sisu);


        Scanner sisendid = new Scanner(System.in);

        JOptionPane.showMessageDialog(null,"Tere tulemast meie hotelli broneerimissüsteemi! Broneeringu tegemiseks" +
                " palume vastata järgnevale ankeedile. ");
        //System.out.print("Tere tulemast meie hotelli broneerimissüsteemi! Broneeringu tegemiseks" +
        //" palume vastata järgnevale ankeedile. " + System.lineSeparator() + "Teie eesnimi: ");
        String eesnimi = JOptionPane.showInputDialog(null,"Teie eesnimi: ");

        String perekonnanimi =  JOptionPane.showInputDialog(null, "Teie perekonnanimi: ");

        int külastajaid = Integer.parseInt(JOptionPane.showInputDialog(null,"Külastajate arv (maksimaalselt 4 inimest): "));

        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        Date saabumineDate;
        Date lahkumineDate;

        try {
            String saabumineString = JOptionPane.showInputDialog(null, "Saabumiskuupäev (sisestage palun formaadis pp-kk-aaaa): ");
            saabumineDate = dateFormat.parse(saabumineString);
        }catch (ParseException p){
            String saabumineString = JOptionPane.showInputDialog(null, "Vigane kuupäevaformaat! Sisesta kuupäev uuesti. " +
                    "Saabumiskuupäev (sisestage palun formaadis pp-kk-aaaa): ");
            saabumineDate = dateFormat.parse(saabumineString);
        }

        try {
            String lahkumineString = JOptionPane.showInputDialog(null, "Lahkumiskuupäev (sisestage palun formaadis pp-kk-aaaa: ");
            lahkumineDate = dateFormat.parse(lahkumineString);
        }catch(ParseException p){
            String lahkumineString = JOptionPane.showInputDialog(null, "Vigane kuupäevaformaat! Sisesta kuupäev uuesti. " +
                    "Lahkumiskuupäev (sisestage palun formaadis pp-kk-aaaa: ");
            lahkumineDate = dateFormat.parse(lahkumineString);
        }


        int maxHind = Integer.parseInt(JOptionPane.showInputDialog(null,"Toa maksimaalne maksumus öö kohta eurodes: " ));

        //koostame sisestatud info põhjal uue Klient isendi
        Klient klient = new Klient(eesnimi + " " + perekonnanimi, külastajaid, saabumineDate, lahkumineDate, maxHind);


        System.out.println("Teie kriteeriumitele vastavad meie hotellis järgmised toad: ");

        //saadaval olevad külastajate arvu poolest sobivad
        //hotellitoad väljastada tsüklina ja seejärel lasta külastajal nende seast valida
        //lisame loenduri i, mis väljastab vastava teate juhul, kui sobivaid tube hotellis ei leidu
        int i = 0;
        List<Hotellituba> sobivadToad = new ArrayList<>();
        for (Hotellituba hotellituba : toad) {
            if (hotellituba.getSaadavus() && hotellituba.getMahutavus() >= klient.getInimesteArv() && hotellituba.getMaksumus() <= maxHind) {
                sobivadToad.add(hotellituba);
            } else {
                i++;
            }
        }

        //juhul, kui sobivaid tube ei leidu, lõpeb programmi töö:
        if (i == toad.size()) {
            System.out.println("Teie kriteeriumitele sobivaid tube meie hotellis kahjuks ei leidu. ");
            System.exit(0);
        }

        Group root = new Group();
        Scene scene = new Scene(root, 500, 500, Color.BLACK);
        pealava.setTitle("JavaFX Scene Graph Demo");
        pealava.setScene(scene);
        pealava.show();

        System.out.println();

        System.out.print("Sisestage soovitud toa number (juhul, kui sobivat ei leidu, sisestage \"0\"): ");
        String valik = sisendid.next();
        System.out.println();

        if (valik.equals("0")) {
            System.exit(0);
        }
        Broneering broneering = null; //tehakse siin, sest muidu for-tsüklis jääb skoopi ja ei saaks väljastada teda. Teen siin ära, siis
        //muudetakse teda for-i sees.

        for (Hotellituba hotellituba : toad) {
            if (valik.equals(hotellituba.getToanumber())) {
                hotellituba.setSaadavus(false);
                broneering = new Broneering(klient, hotellituba, saabumineDate, lahkumineDate);
            }
        }
        int o = 0;
        for(String rida: sisu){
            if(rida.contains(valik)){
                String[] tükid = rida.split(",");
                tükid[3]= "false";
                String uusrida = valik + ",";
                for(int a = 1; a<tükid.length;a++){
                    if(!(a==(tükid.length-1))){
                        uusrida += (tükid[a] + ",");
                    }
                    else{
                        uusrida+=(tükid[a]);
                    }
                }
                sisu.set(o,uusrida);
            }
            o++;
        }

        try(BufferedWriter kirjutaja1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("toad.txt"),"UTF-8"))){
            for(String rida: sisu){
                kirjutaja1.write(rida);
                kirjutaja1.newLine();
            }
        }
        try( PrintWriter out = new PrintWriter(new FileWriter("broneeringud.txt", true));){
            out.write(broneering.haldajaleToString() + "\r\n");
        }
        System.out.println(broneering.kliendileToString());
    }
}
公共类Peaklass扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
public void start(Stage pealava)抛出IOException、ParseException{
List toad=new ArrayList();
//所有这些都是失败的,而且都是失败的
List sisu=new ArrayList();
//这是一个失败的例子
try(BufferedReader lugeja=new BufferedReader(new InputStreamReader(新文件InputStream(“toad.txt”),“UTF-8”)){
字符串rida=lugeja.readLine();
字符串[]tükid;
while(rida!=null){
tükid=rida.split(“,”);
if(Integer.parseInt(tükid[2])>60){
toad.add(新的Sviit(tükid[0],Integer.parseInt(tükid[1]),Integer.parseInt(tükid[2]),
Boolean.parseBoolean(tükid[3]),Boolean.parseBoolean(tükid[4]);
}
否则{
toad.add(new-Tavatuba(tükid[0],Integer.parseInt(tükid[1]),Integer.parseInt(tükid[2]),
Boolean.parseBoolean(tükid[3]),Boolean.parseBoolean(tükid[4]);
}
添加(rida);
rida=lugeja.readLine();
}
}
系统输出打印LN(蟾蜍);
系统输出打印LN(sisu);
扫描仪sisendid=新扫描仪(System.in);
showMessageDialog(null,“Tere tulemast meie hotelli BronerieMissüsteemi!Broneriengu Tegemieks”+
“palume vastata järgnevale ankeedile.”);
//系统输出打印(“Tere tulemast meie hotelli BroneriMissüsteemi!Broneringu Tegemieks”+
//“palume vastata järgnevale ankeedile。”+System.lineSeparator()+“Teie eesnimi:”;
字符串eesnimi=JOptionPane.showInputDialog(null,“Teie eesnimi:”);
字符串perekonnanimi=JOptionPane.showInputDialog(null,“Teie perekonnanimi:”);
int külastajaid=Integer.parseInt(JOptionPane.showInputDialog(null,“külastajate arv(maksimaalselt 4 inimest):”);
SimpleDataFormat dateFormat=新的SimpleDataFormat(“dd-MM-yyyy”);
日期:saabumineDate;
红枣;
试一试{
String saabumineString=JOptionPane.showInputDialog(null,“Saabumiskuupäev(sisestage palun formaadis pp kk aaaa):”;
saabumineDate=dateFormat.parse(saabumineString);
}捕获(解析异常){
String saabumineString=JOptionPane.showInputDialog(null,“Vigane kuupäevaformat!Sisesta kuupäev uuesti.”+
“Saabumiskuupäev(Sissetage palun formaadis pp kk aaaa):”;
saabumineDate=dateFormat.parse(saabumineString);
}
试一试{
字符串lahkumineString=JOptionPane.showInputDialog(null,“lahkumiskupäev(sisestage palun formaadis pp kk aaaa:”);
lahkumineDate=dateFormat.parse(lahkumineString);
}捕获(解析异常){
字符串lahkumineString=JOptionPane.showInputDialog(null,“Vigane kuupäevaformat!Sisesta kuupäev uuesti.”+
“Lahkumiskupäev(Sissetage palun formaadis pp kk aaaa:”);
lahkumineDate=dateFormat.parse(lahkumineString);
}
int maxHind=Integer.parseInt(JOptionPane.showInputDialog(null,“Toa maksimaalne maksumusökohta eurodes:”);
//库斯塔姆·西斯塔德信息公司
Klient Klient=新Klient(eesnimi+“”+perekonnanimi、külastajaid、saabumineDate、lahkumineDate、maxHind);
println(“Teie kriteeriumitele vastavad meie hotellis järgmised蟾蜍:”);
//萨达瓦尔·奥列瓦德·库拉斯塔贾特·阿武·普洛斯特·索比瓦德
//瓦利达酒店
//lisame loenduri i,mis väljastab vastava Teat juhul,kui sobivaid tube hotellis ei leidu
int i=0;
List sobivaddoad=new ArrayList();
用于(Hotellituba Hotellituba:toad){

if(hotellituba.getSaadavus()&&hotellituba.getMahutavus()>=klient.getInimesteArv()&&hotellituba.getMaksumus()你能把这个错误添加到问题中吗?事实证明扫描器就是问题所在。它现在正在工作!注意,JavaFX有一个应该使用的类,而不是一个。一般来说,不建议在JavaFX应用程序中使用Swing组件,如JOptionPane,除非你必须这样做。