当前位置: 首页 > 知识库问答 >
问题:

是否允许循环遍历用户输入以计算成本?

蒋鹏鹍
2023-03-14

我在Java工作。所以我想做的是,从订阅包中获取用户输入

public static String subscriberPackage() { //Method to get the customers name
        
        Scanner sc = new Scanner(System.in);
        System.out.println("\nPlease choose a package the customer would like:");
        System.out.println("Enter Bronze, Silver or Gold to select a package.");
        String subscriptionPackage = sc.nextLine(); //Get subscription package from the user
        while (!(subscriptionPackage.equalsIgnoreCase("Bronze") || subscriptionPackage.equalsIgnoreCase("Silver") || subscriptionPackage.equalsIgnoreCase("Gold"))) {

            System.err.println("This is not a valid package!");
            System.err.println("Please try again!");
            System.out.println("Please choose a package the customer would like:");
            System.out.println("Bronze, Silver or Gold.");
            subscriptionPackage = sc.nextLine();
            //If the package entered is not Bronze, Silver or Gold, the user is asked to re-enter till the while condition is  met

        }
        return subscriptionPackage; //Returns the subscription package to the newSubscription method
    }

和订阅持续时间

 public static int subscriberDuration() { //Method to get the subscription duration
        Scanner sc = new Scanner(System.in);
        System.out.println("\nPlease choose the subscription duration");
        System.out.println("It must be either 1, 3, 6 or 12 months.");
        System.out.println("Please now enter the subscription duration the customer would like");
        int subscriptionDuration = sc.nextInt(); //Get the subscription duration from the user


        while (subscriptionDuration != 1 && subscriptionDuration != 3 && subscriptionDuration != 6 && subscriptionDuration != 12) {
            System.err.println("This is not a valid duration, please try again!");
            System.err.println("It must be either 1, 3, 6 or 12 months.");
            subscriptionDuration = sc.nextInt();
            //If the duration entered is not 1, 3, 6 or 12, the user is asked to re-enter till the while condition is  met

        }
        return subscriptionDuration; //Returns the subscription duration to the newSubscription method
    }

并计算订户账单中的成本。

private static int subscriberBill(String subscriptionPackage, int subscriptionDuration) {

        int subscriptionCost = 0;
        int[] subsBronzePackageCosts = new int[1000];
        subsBronzePackageCosts[0] = 600;
        subsBronzePackageCosts[1] = 500;
        subsBronzePackageCosts[2] = 400;
        subsBronzePackageCosts[3] = 300;
        int count = 0;

        for(int i = 1; i <= 12; i+=3){
            if (subscriptionPackage.equals(subscriptionPackage) && (subscriptionDuration == subscriptionDuration)) {
                subscriptionCost = (subsBronzePackageCosts[i] + i + count);
                count++;
                System.out.println("\nThe cost of this subscription is: " + subscriptionCost);

                return subscriptionCost;


            }
        }
        return subscriptionCost;
    }
}

我已经设法通过这些信息,并开始添加青铜层订阅包的成本。我已经这样做了使用数组:

int[] subsBronzePackageCosts = new int[1000];
        subsBronzePackageCosts[0] = 600;
        subsBronzePackageCosts[1] = 500;
        subsBronzePackageCosts[2] = 400;
        subsBronzePackageCosts[3] = 300;

我试图循环遍历所述数组,例如,用户将持续时间设置为3,它将使用for循环遍历我的数组,并将subscriptionCost设置为适当的值。在这个例子中,是400。

我遇到的问题是,使用for循环遍历数组。我有,所以每次只增加1个,报告500个。我确实有一个针对不同包类型和持续时间的if-else语句的解决方案,但显然,这不是理想的做法,并且会导致重复代码,我正试图避免这种情况。

提前谢谢!

共有1个答案

宋昊然
2023-03-14

你的代码看起来有点混乱。但是我想我要指出你如果陈述中的逻辑...

订阅包。等于(subscriptionPackage)。。。这永远是真的,对吗?所以你可以删除这个。

subscriptionDuraction==suscriptionDuration。。。提乌斯也是真的,对吗?所以你的整个if语句消失了。

所以这个if语句的计算结果总是true,这意味着您将始终在if块中命中return语句,i=1,在数组中,[1]=500。

 类似资料:
  • 问题内容: 这是模块的模块声明: 因此,和之间存在循环依赖关系,对吗?平台模块之间是否允许循环? 问题答案: 模块系统禁止使用子句静态声明循环。对于平台和应用程序模块,这是正确的,并且您给出的示例不违反该规则。 不过,Requires子句只是模块图中可读性优势的一种来源。其他是命令行标志,反射,,我敢肯定还有更多。添加所有这些可能会导致模块图中的循环,并且这是不被禁止的。 在您的具体示例中,仅当

  • 对于这个问题,我需要用一个公式求出两个点之间的距离,给定两个点的坐标和值p。我让程序为一个输入行工作,但我希望用户能够输入多行,并让程序循环通过它们。例如: 1.0 1.0 2.0 2.0 1.0 我对java相当陌生,还在学习,所以我很感激我能得到的任何帮助。提前谢了。

  • 问题内容: 我有一个具有1 2 3 4 5值的数组。 现在我想以循环方式遍历它。像我想打印2 3 4 5 1或3 4 5 1 2或5 1 2 3 4等等。有什么 算法 吗? 编辑: 我想以循环方式打印所有组合。我不想在初始阶段说明起点。 问题答案: (如果要从向下迭代数组,请在数组下标表达式中更改为。) 我应该注意,就执行速度而言,这可能不是表达循环的最有效方法。但是,差异很小,并且 很可能无关紧

  • 需要帮助通过简单的HTML DOM解析器遍历DOM树。如果有人能花点时间来看看它是如何工作的,那么如果我能理解的话,知识渊博的PHP程序员应该能很快理解它。我陷入困境的地方是从我朋友的俄罗斯篮球网站上的一个部门那里得到文章。例如,以下是博客div的外观: 这就是我如何拉出单个“a”链接并显示它们的方法,但我想做的是获取所有链接的div标题,基本上对它们进行分类,而不是将所有内容都排成一行。我不知道

  • 我得到一个使用下面的代码的锚的列表,然后我想去每个链接。我想出了下面的代码,但是在第一个循环之后,我得到了以下异常 org.openqa.selenium.staleElementReferenceException:过时元素引用:元素未附加到页面文档(会话信息:Chrome=55.0.2883.87) 有没有办法做到这一点,而不需要每次返回页面?

  • 问题内容: 通常我们这样编码: 但是也可以按照以下方式做一些事情: 我想要这样做的真正原因是因为我想使用python-progressbar的自动检测maxval。他们喜欢 问题答案: 您可以与callable一起使用。(您应该传递两个参数,一个用于可调用对象,另一个用于前哨值) 注意 当没有剩余元素并且没有放置哨兵值时,它将阻塞。另外,就像-循环,并且与普通的容器循环不同,它将从队列中删除项目。