更新用户第一次做出诸如"1"之类的选择时,将再次显示菜单。下次进行选择时,付款信息开始循环。循环完成后,菜单再次显示,它将正常工作。此外,当选择开始循环时,前两年是输出,而不仅仅是第一年,但随后按预期一次输出一年。
//create scanner object for choosing a loan, then prompt for and accept input
Scanner choose = new Scanner(System.in);
String choice;
System.out.println("nType 1, 2, or 3 and press enter to see the monthly payment information for the respective loan. To end the program type "end".");
choice = choose.next();
//cycle loan 1 payment information
//create scanner object to advance to the next year's payments
//loop for cycling payment information
//initialize loan principal to variable
while (!"end".equals(choice)) {
System.out.println("nType 1, 2, or 3 and press enter to see the monthly payment information for the respective loan. To end the program type "end".");
choice = null;
choice = choose.next();
if ("1".equals(choice)) {
//calculation code
}
if (j < 6) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = choose.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
}
choice = null;
}
if ("2".equals(choice)) {
//calculation code
}
if (j < 14) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = choose.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
}
choice = null;
}
if ("3".equals(choice)) {
//calculation code
}
if (j < 29) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = next.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
}
choice = null;
}
}
choose.close();
}
}
我可以预先看到三个问题:
-
您不需要两个扫描仪即可
System.in
流。Scanner next = new Scanner(System.in);
删除此语句并使用choose
实例。 -
如果按
next.close();
关闭输入扫描程序,它也会System.in
关闭输入流,并且您可能无法再次读取流。确保仅在完全完成程序后关闭流。 -
使用
equals
方法将while
中的条件比较为while(!"end".equals(choice))
。将文字"end"
作为第一个参数将处理choice
的空值。
编辑:
您修改的代码在高级别:
Scanner choose = new Scanner(System.in);
String choice= null;
int j = 0;
while (!"end".equals(choice)) {
System.out.println("nType 1, 2, or 3 and press enter to see the monthly payment information for the respective loan. To end the program type "end".");
choice = choose.nextLine();
if ("1".equals(choice)) {
//calculation code
if (j < 6) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = choose.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
choice = null;
}
if ("2".equals(choice)) {
if (j < 14) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = choose.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
choice = null;
}
if ("3".equals(choice)) {
if (j < 29) {
System.out.println("Press enter to get the mortgage information for year " + (j + 2));
choice = choose.nextLine();
} else {
System.out.println("Congratulations, your mortgage has been paid off.");
}
choice = null;
}
}
choose.close();
一个错误是字符串相等性与 == 不同。你应该使用 .equals():
while (!choice.equals("end")) {
希望对您有所帮助!
您将choice
设置为null
,因此choice != "end"
始终为真。将next.close(); choice = null
移到 while 循环的外部。另外,weolfe91说的。
import java.util.Scanner;
类 主要
{
public static void main(String [] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter no.1:");
int a=sc.nextInt();
System.out.println("Enter no.2:");
int b=sc.nextInt();
boolean exit=false;
do
{
System.out.println("1.addition");
System.out.println("2.subtraction");
System.out.println("3.multiplication");
System.out.println("4.division");
System.out.println("5.exit");
System.out.println("choose one!");
Scanner sd=new Scanner(System.in);
System.out.println("enter your choice");
int num=sd.nextInt();
switch(num)
{
case 1:
int add=a+b;
System.out.println("addition="+add);
System.out.println("n");
break;
case 2:
int sub=a-b;
System.out.println("subtraction="+sub);
System.out.println("n");
break;
case 3:
int mul=a*b;
System.out.println("multilpication="+mul);
System.out.println("n");
break;
case 4:
int div=a/b;
System.out.println("division="+div);
System.out.println("n");
break;
case 5:
exit=true;
break;
}
}while(!exit);
}
}