【问题标题】:need to create a java loop with different user inputs to each loop需要为每个循环创建一个具有不同用户输入的 java 循环
【发布时间】:2018-03-28 23:56:36
【问题描述】:

我有以下代码显示输入的每个客户的停车票。

我需要创建一个 for 或 while 循环,显示 9 次停车票,允许用户在每个循环中输入不同的客户名称、rego 编号和停车小时数。我不确定该怎么做。

package week3;

import java.util.Scanner; 
public class Week3 
{
  static final double costPerHour = 4.25;

public static void main(String[] args) 
{
    String customerName;
    String customerNumberPlate;
    int hoursParked;
    double parkingFee; 


Scanner inText = new Scanner(System.in); //Create scanner object
Scanner inNumber = new Scanner(System.in); //Create scanner object

System.out.print("Please enter name of customer >>> "); //Prompt asking user for name
customerName = inText.nextLine(); //Declare string object

System.out.print("Please enter number plate of " + customerName +"'s vehicle >>> "); //Prompt asking for user number plate
customerNumberPlate = inText.nextLine();

System.out.print("Please enter hours customer parked >>> ");
hoursParked = inNumber.nextInt();

   if(hoursParked > 0 && hoursParked <=1) //Set boundaries 
    parkingFee = 4.25;

 else
    if (hoursParked > 1 && hoursParked <= 6) 
    parkingFee = (3.50 * hoursParked);

 else 
    parkingFee = (2.75 * hoursParked);

System.out.println("\n" + "--------Receipt--------" + "\n" 
+ "Customer: " + customerName + "\n"     
+ "Number Plate >>> " +  customerNumberPlate + "\n"
+ "Hours Parked >>> " + hoursParked + "\n"
+ "Parking Fee >>> " + parkingFee);
}
}

【问题讨论】:

  • 将整个代码块包装在for 循环中? (如果您先将代码移动到一个单独的方法,然后只循环一个方法调用,它会更清晰——更容易阅读。)

标签: java loops for-loop while-loop


【解决方案1】:
  • 您可以使用循环forwhiledo ... while 来获得结果。在下面的例子中,我使用循环for。也许您可以更改循环的类型。
  • 您不需要两个Scanner 对象。一物足矣。在这里,我将其命名为 Scanner input = new Scanner(System.in),在每个循环结束时,您需要使用此代码 input.nextLine() 清理实际输入行(请参见下面的代码)。
  • 当用户在客户停车时间的数字位置输入字母时,代码会生成错误(Java 中的异常)。您需要了解如何使用try ... catch bloc 处理此错误。

在循环while的情况下:

int counter = 0;

while (counter < 9) {

  /* your actual code */

  counter++;

}

在循环的情况下do ... while:

int counter = 0;

do {

  /* your actual code */

  counter++;

} while (counter < 9);

在for循环的情况下: (这里代码比较完整)

package week3;
import java.util.Scanner; 
 public class Week3 
{
  static final double costPerHour = 4.25;

  public static void main(String[] args) 
  {
    String customerName;
    String customerNumberPlate;
    int hoursParked;
    double parkingFee; 

    Scanner input = new Scanner(System.in);

    for (int i = 0; i < 9; i++) {

        System.out.print("Please enter name of customer >>> "); //Prompt asking user for name
        customerName = input.nextLine(); //Declare string object

        System.out.print("Please enter number plate of " + customerName +"'s vehicle >>> "); //Prompt asking for user number plate
        customerNumberPlate = input.nextLine();

        System.out.print("Please enter hours customer parked >>> ");
        hoursParked = input.nextInt();

        if(hoursParked > 0 && hoursParked <=1) //Set boundaries 
            parkingFee = 4.25;

         else
            if (hoursParked > 1 && hoursParked <= 6) 
            parkingFee = (3.50 * hoursParked);

         else 
            parkingFee = (2.75 * hoursParked);

        System.out.println("\n" + "--------Receipt--------" + "\n" 
        + "Customer: " + customerName + "\n"     
        + "Number Plate >>> " +  customerNumberPlate + "\n"
        + "Hours Parked >>> " + hoursParked + "\n"
        + "Parking Fee >>> " + parkingFee);

        System.out.println("");

        input.nextLine(); // important: to clean the actual line

    }

 }
}

【讨论】:

  • 谢谢!我也使用了 for 循环,得到了和你一样的结果
  • @E.Allen:如果它对你有帮助,你应该接受回答说你的问题已经解决。
猜你喜欢
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多