【发布时间】:2014-10-26 22:16:32
【问题描述】:
当我输入“p”情况时遇到问题,完成后它会再次重复我的 while 循环的顶部,最后用户必须在“输入”变量中放入一些东西。问题是用户永远不会被提示输入任何内容以进行“输入”,然后它再次循环,重新打印之前刚刚打印的所有信息。第二次确实允许用户输入一些东西以进行“输入”。这只发生在我运行“p”案例之后。
有人请帮助我!将不胜感激!
package PayandGoParking;
/**
* Purpose: Input:
*
* Processing done:
*
* Output:
*
* @author (your name)
* @version (a version number or a date)
*/
import java.util.Scanner;
import java.util.*;
import java.io.*;
import java.text.DecimalFormat;
public class Assignment2 {
public static void main(String[] args) throws IOException {
Calendar now = Calendar.getInstance();
Scanner k = new Scanner(System.in);
DecimalFormat dm = new DecimalFormat("00");
String input = " ",
cardNumber,
x = "x";
double anyKey;
double currentTime,
currentCharge = 0,
securityCode,
totalCharge = 0;
Calendar paidTill;
int min = 0;
while (input != x) {
System.out.println("Welcome to Pay and Go parking");
System.out.println("+ to add 30 minutes ($1.00 charge)");
System.out.println("p to print the ticket");
System.out.println("r to restart");
System.out.println("x to exit the program");
System.out.print("Please enter your selection: ");
input = k.nextLine();
switch (input) {
case "+":
min += 30;
currentCharge += 1;
paidTill = (Calendar) now.clone();
paidTill.add(Calendar.MINUTE, min);
System.out.println("================================================");
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Current Time: ", now.get(Calendar.MONTH),
"-", now.get(Calendar.DAY_OF_MONTH), " ", now.get(Calendar.HOUR_OF_DAY), ":",
dm.format(now.get(Calendar.MINUTE)));
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Paid Till: ", paidTill.get(Calendar.MONTH),
"-", paidTill.get(Calendar.DAY_OF_MONTH),
" ", paidTill.get(Calendar.HOUR_OF_DAY), ":",
dm.format(paidTill.get(Calendar.MINUTE)));
System.out.printf("%s%.2f\n", "Current Charge $", currentCharge);
System.out.println("================================================");
break;
case "p":
System.out.print("Enter Credit Card Number: ");
cardNumber = k.nextLine();
System.out.print("Enter 3 digit security code from back of Credit Card: ");
securityCode = k.nextDouble();
System.out.println("=================================================");
System.out.println("Pay and Go Parking");
System.out.println("Lot Location: 123 Main St,");
System.out.println("Honolulu, Hawaii");
System.out.println("-----------------------------");
totalCharge += currentCharge;
paidTill = (Calendar) now.clone();
paidTill.add(Calendar.MINUTE, min);
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n", "Current Time: ",
now.get(Calendar.MONTH), "-",
now.get(Calendar.DAY_OF_MONTH), " ", now.get(Calendar.HOUR_OF_DAY),
":", dm.format(now.get(Calendar.MINUTE)));
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Paid Till: ", paidTill.get(Calendar.MONTH),
"-", paidTill.get(Calendar.DAY_OF_MONTH),
" ", paidTill.get(Calendar.HOUR_OF_DAY), ":",
dm.format(paidTill.get(Calendar.MINUTE)));
System.out.printf("%s%.2f\n", "Total charged to Credit Card $", currentCharge);
System.out.println("==========================================");
System.out.println("Tear off receipt and place on dash");
System.out.print("Press any key to continue");
anyKey = k.nextDouble();
System.out.println("================================================");
paidTill = (Calendar) now.clone();
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n", "Current Time: ",
now.get(Calendar.MONTH),
"-", now.get(Calendar.DAY_OF_MONTH), " ",
now.get(Calendar.HOUR_OF_DAY), ":", dm.format(now.get(Calendar.MINUTE)));
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Paid Till: ", paidTill.get(Calendar.MONTH),
"-", paidTill.get(Calendar.DAY_OF_MONTH),
" ", paidTill.get(Calendar.HOUR_OF_DAY), ":",
dm.format(paidTill.get(Calendar.MINUTE)));
currentCharge = 0;
min = 0;
System.out.printf("%s%.2f\n", "Current Charge $", currentCharge);
System.out.println("================================================");
break;
case "r":
currentCharge = 0;
min = 0;
paidTill = (Calendar) now.clone();
System.out.println("================================================");
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Current Time: ", now.get(Calendar.MONTH),
"-", now.get(Calendar.DAY_OF_MONTH), " ",
now.get(Calendar.HOUR_OF_DAY), ":",
dm.format(now.get(Calendar.MINUTE)));
System.out.printf("%s%s%s%s%s%.2s%s%.2s\n",
"Paid Till: ", paidTill.get(Calendar.MONTH),
"-", paidTill.get(Calendar.DAY_OF_MONTH),
" ", paidTill.get(Calendar.HOUR_OF_DAY),
":", dm.format(paidTill.get(Calendar.MINUTE)));
System.out.printf("%s%.2f\n", "Current Charge $", currentCharge);
System.out.println("================================================");
break;
case "x":
input = x;
break;
}
}
System.out.println("\nTotals for Pay and Go Parking");
System.out.println("========================");
System.out.printf("%s%12s%7.2f\n", "Totals", "$", totalCharge);
}
}
【问题讨论】:
-
请先帮助我们,将代码示例减少到说明问题的可管理大小。
-
请向我们展示mcve 示例 - 此外,您可能会在编写新代码 sn-p 时发现问题。
标签: java while-loop switch-statement