我必须创建一个为包创建标签的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);
}
}
答案 0 :(得分:2)
我可以看到你通过尝试复制和粘贴原始代码来创建循环,但结果代码的工作流程不正确。
看,你的代码目前是这样的:
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
的信息,请查看this link。
答案 1 :(得分:1)
您的打印件位于循环内部,在满足退出条件后不会再次运行。
我建议你做出以下改动:
while-do
更改为do-while
。或者,如果您需要知道用户是否已在其他地方停止输入:
boolean isRunning = true
变量。这将是您新的循环退出条件。y
时,请将退出条件设置为false
。while
循环条件更改为while(isRunning)
与问题无关,但也很重要:
a
和b
。
main
类,表示程序的整个持续时间。a
和b
等变量名称。除了for-loop
索引中的一些特定情况(通常称为i
, i ndex),您的变量应该具有有意义的名称。在这种情况下,它们不是必需的,但它们的名称类似于exitCharLowCase
和exitCharHighCase
。
JOptionPane
获取输入的变量)两次,您可以将它放在一个函数中,然后调用该函数两次,简化您的代码,以及减少维护工作(只需找到并更改一个代码而不是两个;未来的良好实践)。Objects
。
title
,firstName
,lastName
,//etc...
变量可以转换为对象,允许您处理所有这些变量,就像它们只是一个变量一样与孩子&#34;变量