0
tf
是一個JTextField
。第二個循環正在執行第一個
預期執行的流程:
- 控制不應該直到東西是在一個名爲
tf
的JTextField
進入搬出first loop
的。 第二個
while loop
只能在控件移出第一個後才能運行。while(true) { if((!tf.getText().equals(""))) { p.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { String name=tf.getText(); System.out.println("Hello "+name+",\nWelcome to Guess the number Game"); } }); break; } else if (tf.getText().equals("")) { p.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { p.setSelected(false); } }); continue; } } //while end while(true) { st="game on"; System.out.println(st); if(!st.equals("")) { gamer3 game1=new gamer3(); Thread nt =new Thread(game1); nt.start(); break; }
問題:
- 二
while loop
是越來越首先執行。打印出game on
。 - 只要我輸入
tf
的東西,第二個while loop
內的代碼就會被執行。爲什麼只要我輸入tf
的東西,控件就會移動到第二個while loop
?第二個while loop
甚至不依賴於tf
。 - 輸入
tf
後,我甚至不需要按enter
。在按enter
之前輸入的值如何被識別?
主要問題:
- 爲什麼第二循環得到第一執行?
- 根據控制的一般流程,控制器必須保持在第一個循環,直到遇到
break
語句。爲什麼這裏沒有遵守這個規定? - 當我按下開始按鈕時,控件回到上一個循環。
- 控制在第一個while循環中從未進入
else if
。
注意: 第二個while循環只有在我輸入tf
後纔會執行。並且一旦我在循環執行時首先按下啓動按鈕。
我會關注通知關於你重複添加'ActionListener'到一個循環內的字段,只是複合它們。考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它可以證明你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的響應 – MadProgrammer
@MadProgrammer我已添加圖像以顯示實際發生的情況。在「問題」一節中,我提到了預計不會發生的事情。我在第一個while循環中編寫了'System.out.println(「loop 1」);'它實際上重複地打印了'loop 1'。這意味着,控件保留在「循環1」中,直到在文本字段中輸入內容。 –
無法調試圖像 – MadProgrammer