[英]Loop doesn't work as expected
我必須創建一個Java代碼,為包裝創建標簽。 當用戶輸入“ y”或“ Y”以響應“您想創建更多”時,它將再次循環。 如果用戶輸入“ y”或“ Y”以外的任何內容,它將退出循環。 我遇到的問題是,在用戶輸入所有信息並被問到問題后,如果用戶說了y或Y以外的任何內容,它確實會退出程序,但不會輸出任何標簽信息。 如果輸入y或Y,它將正確輸出標簽信息,並再次完美地循環運行。 只是想知道是否有人可以幫助我了解我在做什么,以便我輸入y或Y以外的任何內容后可以輸出標簽信息。
import javax.swing.JOptionPane;
public class MailOrderAFG //Define my public class
{
public static void main(String [] args)
{
String title, firstName, lastName, streetAddress, city, state, zip, numBoxesInput, enterAnother;
String a = "y", b = "Y";
title = JOptionPane.showInputDialog("Enter title (Mr., Mrs., Ms., etc.): ");
firstName = JOptionPane.showInputDialog("Enter first name: ");
lastName = JOptionPane.showInputDialog("Enter last name: ");
streetAddress = JOptionPane.showInputDialog("Enter street address: ");
city = JOptionPane.showInputDialog("Enter city: ");
state = JOptionPane.showInputDialog("Enter state: ");
zip = JOptionPane.showInputDialog("Enter zip code: ");
numBoxesInput = JOptionPane.showInputDialog("Enter number of boxes in the order: ");
enterAnother = JOptionPane.showInputDialog ("Do you want to produce more labels? Y or N ");
int numBoxes = 0;
int i;
while(enterAnother.equals(a) || enterAnother.equals(b)) //priming read
{
numBoxes = Integer.parseInt(numBoxesInput); //changing string to int so we can do arithmatic with it
{
for (i = 1; i <= numBoxes; i++) { //adding one until i is equal to numBoxes, then it will exit the loop
System.out.println(title + " " + firstName + " " + lastName);
System.out.println(streetAddress);
System.out.println(city + ", " + state + " " + zip);
System.out.println("Box " + i + " of " + numBoxes);
System.out.println();}
title = JOptionPane.showInputDialog("Enter title (Mr., Mrs., Ms., etc.): ");
firstName = JOptionPane.showInputDialog("Enter first name: ");
lastName = JOptionPane.showInputDialog("Enter last name: ");
streetAddress = JOptionPane.showInputDialog("Enter street address: ");
city = JOptionPane.showInputDialog("Enter city: ");
state = JOptionPane.showInputDialog("Enter state: ");
zip = JOptionPane.showInputDialog("Enter zip code: ");
numBoxesInput = JOptionPane.showInputDialog("Enter number of boxes in the order: ");
enterAnother = JOptionPane.showInputDialog ("Do you want to produce more labels? Y or N ");
}
}
System.exit(0);
}
}
我可以看到您通過嘗試復制和粘貼原始代碼創建了循環,但是生成的代碼的工作流程不正確。
看,您的代碼當前如下所示:
FETCH INFO FROM USER
ASK IF USER WANTS MORE
while (WANTSMORE)
PRINT INFO
FETCH INFO FROM USER
ASK IF USER WANTS MORE
end while
end program
看,它實際上應該就是這樣:
do
FETCH INFO FROM USER
ASK IF USER WANTS MORE
PRINT INFO
while (WANTSMORE)
end program
查看是否可以重新排序代碼以更正工作流程。 如果您需要有關do-while
信息, do-while
檢查此鏈接 。
您的打印件位於循環中,在滿足退出條件后該循環不會再次運行。
我建議您進行以下更改:
while-do
更改為“ do-while
。 或者,如果您需要知道用戶是否已停止在其他地方輸入:
boolean isRunning = true
變量。 這將是您的新循環退出條件。 y
,將退出條件設置為false
。 while
循環條件更改為while(isRunning)
與問題無關,但也很重要:
a
和b
。
main
類,表示程序的整個持續時間。 a
和b
這樣a
變量名。 除了一些特殊情況(例如for-loop
索引)(對於i ndex,通常稱為i
)外,您的變量應具有有意義的名稱。 在這種情況下,不需要它們,但是它們將被命名為exitCharLowCase
和exitCharHighCase
。
JOptionPane
獲取輸入)。第二;對未來的良好做法)。 Objects
。
title
, firstName
, lastName
, //etc...
變量可以變成一個對象,使您可以處理所有這些變量,就好像它們只是帶有“子”變量的一個變量一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.