【问题标题】:Q : Not understanding loop process? or possible if statements?问:不了解循环过程?或可能的 if 语句?
【发布时间】:2018-10-29 18:50:05
【问题描述】:

我正在从事一个涉及创建租车计算器的项目。

当被问到:“你想租什么车??”时,我想做的是做到这一点。如果在提示用户时输入了一个不在 1-3 之间的数字,那么我希望程序循环回到再次询问车辆类型的位置。

同样,当提示“请输入租用天数”时。 (Example; 3) : ' 我只想让用户输入正整数。例如,不允许输入 3.1、2.35、0.35 -2 等...

这是我写的内容以及我对这些问题的尝试:

package inter;

import java.util.Scanner;

public class Inter {
    public static void main(String []args){
        int count=0;
        int days;
        double DailyFee=0, NontaxTotal, CarType, Total,FullTotal=0;
        Scanner in=new Scanner(System.in);
        System.out.println("If there are any customer press 1 else press 0");
        int cus=in.nextInt();

        while(cus!=0){
            count++;
            System.out.print("What vehical would you like to rent?\n");
            System.out.println("Enter 1 for an economy car\n");
            System.out.println("Enter 2 for a sedan car\n");
            System.out.println("Enter 3 for an SUV");
            CarType = in.nextInt();
            if (CarType == 1) {
                  DailyFee=31.76;
            }
            else if(CarType == 2) {
                  DailyFee=40.32;
            }
            else if(CarType == 3) {
                  DailyFee=47.56;
            }
            else if(CarType <= 0) {
                System.out.println("input is not a positive Integer ");
                System.out.println("Please enter a positive integer value: ");
                cus = 0; }
            else if(CarType > 4) {
                System.out.println("input is not a positive Integer ");
                System.out.println("Please enter a positive integer value: ");
                cus = 0; }

            System.out.print("Please enter the number of days rented. (Example; 3) : ");
            days = Integer.valueOf(in.nextLine());
            double x=days;
            NontaxTotal = (DailyFee * x);
            Total = (NontaxTotal * 1.06);
            FullTotal+=Total;

            System.out.printf("The total amount due is $ %.2f \n",Total);

            System.out.println("If there are any customer press 1 else press 0");
            cus=in.nextInt();
        }
        System.out.println("Count of customers : "+count);
        System.out.printf("Total of the Day : $ %.2f",FullTotal);
    }   
}

【问题讨论】:

  • do { //ask for and assign input; } while(CarType &lt; 0 || CarType &gt; 3);
  • @GBlodgett 谢谢这解决了我的问题,即只允许输入 1-3 作为车辆类型。无论如何,你知道我在提示时如何只允许输入 1 或 0 的任何提示:“如果有任何客户按 1 否则按 0”,每当我尝试调整它时,我会弄乱我所拥有的循环如果输入 0,则汇总数据。?

标签: java loops if-statement while-loop double


【解决方案1】:

让我帮你解决这个问题, 我为你制作了这段代码,我试过了,它奏效了 这将检查两个答案是否都是整数(整数)并且大于零,并且还将首先检查答案是否是数字,以便如果用户用字母回答,他将被提示再试一次 这是我的建议: 基本上我使用带有 InputMismatchException 的 try-catch 块来检测答案是否不是整数(整数)或根本不是数字,每次检测到错误时,我都会将布尔值翻转为 false 并保持循环只要这个布尔值是假的(我在检查之前将布尔值翻转回真,否则一旦用户给出错误的答案,即使他给出了正确的答案,他也会被提示回答)

    int vehicleType;
    int numberOfDays;
    double dailyFee;
    boolean validAnswer1 = false;
    boolean validAnswer2 = false;

    Scanner scan = new Scanner(System.in);

    while (validAnswer1 == false) {
        validAnswer1 = true;
        System.out.println("Choose Vehicle Type");
        try {
            vehicleType = scan.nextInt();
            if (vehicleType <= 0) {
                System.out.println("Number must be more than zero");
                validAnswer1 = false;
            } else if (vehicleType >= 4) {
                System.out.println("Number should be from 1 to 3");
                validAnswer1 = false;
            } else {
                if (vehicleType == 1) {
                    dailyFee=31.76;
                } else if(vehicleType == 2) {
                    dailyFee=40.32;
                }else if(vehicleType == 3) {
                    dailyFee=47.56;
                }
                while (validAnswer2 == false) {
                    validAnswer2 = true;
                    try {
                        System.out.println("Enter number of days rented ?");
                        numberOfDays = scan.nextInt();
                        if (numberOfDays <= 0) {
                            System.out.println("Number of days must be more than zero");
                            validAnswer2 = false;
                        } else {
                            // calculate your rent total here
                        }
                    } catch(InputMismatchException ex) {
                        System.out.println("Answer must be an Integer");
                        validAnswer2 = false;
                        scan.next();
                    }
                }                   
            }
        } catch (InputMismatchException ex) {
            validAnswer1 = false;
            System.out.println("Answer must be an Integer");     
            scan.next();
        }           
    }

希望这很有用,如果您仍然需要帮助,请告诉我

【讨论】:

  • 谢谢@Zeyad,我现在必须去上课,但今晚或明天会重新上线。如果我有任何其他问题,我应该发表评论还是新答案?我有点新在这里抱歉。另外,是否考虑在完成后发布工作以便人们进行审查?这是个好主意吗?
  • @JavaNovi247 嗨!欢迎来到 SO。如果您还有其他问题,ask a new one,如果有助于提供上下文,请在正文中提供此问题的链接。代码审查应发布到Code Review
  • @JavaNovi247,欢迎您回答问题,然后将满意或对您有用的答案(使用旁边的勾号)标记为已接受,以表明您的问题已得到解答。然后您在另一篇文章中提出另一个问题,因为这里的人们通常会先搜索有类似问题的人,然后查看是否已回答,如果没有,则询问。因此,您作为不同帖子的问题将帮助其他人查找更多问题。请注意,根据您的分数,我猜在一个间隔内要问多少个问题是有限制的。
  • @Zeyad 这就是我所做的,但它仍然没有完全工作,我不知道为什么?当提示输入汽车类型时,即使输入 1-3,程序也不执行任何操作?
  • @Zeyad 我不知道在哪里发布我的作品以向您展示我拥有的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
相关资源
最近更新 更多