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

成本计算器

羊毅庵
2023-03-14

我的代码需要通过3个不同的问题来计算ISP服务的成本。包的选择(1,2,3)是哪个月:(1-12)使用多少小时:(x)

我把月份分成了3个独立的数组。一个是二月份的28天,一个是30天的月份,一个是31天的月份。我需要检查输入的小时数,并确保它不超过他们选择的任何一个月的小时数。我已经开始用这个:

import java.util.Scanner; //Needed for the scanner class

public class ISP_Cost_Calc 
{

    public static void main(String[] args) 
    {
        String input;                                   //To hold users input.
        char selectPackage;                             //To hold Internet Package
        double hourUsage, totalCharges, addCharges;     //Variables 
        Scanner keyboard = new Scanner(System.in);      //Create a Scanner object to collect keyboard input.

        int[] twentyeightArray;                         //List of months with 28 days (that's what the te is for)
        twentyeightArray = new int[1];                  //Make room for one integer in list
        twentyeightArray[0] = 2;                        //Set the one integer in this list to month number 2

        int[] thirtyArray;                              //List of months with 30 days.
        thirtyArray = new int[4];
        thirtyArray[0] = 4;
        thirtyArray[1] = 6;
        thirtyArray[2] = 9;
        thirtyArray[3] = 11;

        int[] thiryoneArray;                                //List of months with 31 days.
        thiryoneArray = new int[7];
        thiryoneArray[0] = 1;
        thiryoneArray[1] = 3;                               
        thiryoneArray[2] = 5;
        thiryoneArray[3] = 7;
        thiryoneArray[4] = 8;
        thiryoneArray[5] = 10;
        thiryoneArray[6] = 12;


        //Prompt the user to select a Internet Package.
        System.out.print("Enter your plan (1, 2, 3):");
        input = keyboard.nextLine();
        selectPackage = input.charAt(0);
        //Prompt the user for the month.
        System.out.print("Enter your month number (1-12):");
        input = keyboard.nextLine();
        char monthNum = input.charAt(0);
        //Prompt the user for how many hours used.
        System.out.print("Enter your hours:");
        input = keyboard.nextLine();
        hourUsage = Double.parseDouble(input);

//Display pricing for selected package...

            switch (selectPackage)
            {

                case '1':
                    if (hourUsage > 10)
                    {
                        addCharges = hourUsage - 10;
                        totalCharges = (addCharges * 2.0) + 9.95;
                        System.out.println("You have used " + hourUsage + " hours and your total is $" + totalCharges + " per month. ");
                    }
                    else
                    {
                        System.out.println("Your total is $9.95 per month.");

                    }
                    break;


                case '2':
                    if (hourUsage > 20 )
                    { 
                        addCharges = hourUsage - 20;
                        totalCharges = (addCharges * 1.0) + 13.95;
                        System.out.println("You have used " + hourUsage + " and your total is $" + totalCharges + " per month.");
                    }
                    else
                    {
                        System.out.println("Your total is $13.95 per month.");

                    }
                    break;


                case '3':
                    System.out.println("Your total is $19.95 per month.");
                    break;
                default:
                    System.out.println("Invalid Choice.");
            }

    }


}

所以我只需要一些建议,如何将它合并到我的if语句中。谢谢

共有3个答案

姬飞飙
2023-03-14

不创建多个数组,只需使用一个数组,如:

month[0] = 31;
month[1] = 28;//what if leap year?
month[2] = 31;
//and so on

然后可以执行以下操作:

int monthNumber = monthNum - 48;
if (hours > month[monthNumber - 1] * 24) {
    //do something
} else {
     //else do another thing
}
施宏大
2023-03-14

如果使用包含天数和小时数的Months枚举,而不是对不同天数使用单独的数组,则可能会更容易。

public enum Month {

JANUARY(31),FEBRUARY(28),MARCH(31),APRIL(30),MAY(31),JUNE(30),JULY(31),AUGUST(30),SEPTEMBER(30),OCTOBER(31),
NOVEMBER(30),DECEMBER(31);

private int hours;
private Month(int days){
    hours = days*24;
}

public int getHours(){
    return hours;
}

}

使用这样的东西可以减少不必要的数组使用,并将所有内容组合到一个类中。这将使获得每个月的天数和小时数变得容易得多。

百里雅珺
2023-03-14

而不是使用单独的数组来实现月。您可以这样做:

int[] month = {31,28,31,30,31,30,31,31,30,31,30,31};
int[] monthLeapYear = {31,29,31,30,31,30,31,31,30,31,30,31};

您可以先检查给定的年份是否是闰年,然后选择正确的数组用于月份。这样你只需要2个数组-永远。

你可能会有这样的东西帮你。我还建议您在实现中创建一些方法来模块化您的程序

public static Boolean isLeapYear(int year)
{
    if(year % 4 == 0 && year % 100 != 0)
        return true; 
    return false;   
}

该数组按索引0-11排列。这样做就可以结束:

//Let say your current month is 1-12
month[currentMonth-1]

或者,向数组中添加1个元素(这样元素现在就对齐了):

int[] month = {0,31,28,31,30,31,30,31,31,30,31,30,31};
 类似资料:
  • 如何在cmd上运行csr生成命令。exe openssl req-节点-newkey rsa: 2048-keyoutwww_mydomain_com.key-outwww_mydomain_com.csr-subj"/C=BB/ST=CCC/L=DDD/O=EEE。/OU=IT/CN=mydomain.com"

  • 不管外观如何不同,每个计算机都可以看成由六个单元(logical unit)或部分组成,即: 1.输入单元(iput unit),这是计算机的“接收”部分,从各种输入设备接收信息(数据和计算机程序),并将这些信息放到其他单元中,使信息得以处理。如今大多数信息都是通过键盘和鼠标设备输入计算机。将来大多数信息也许可以通过语音输入或扫描图形而获得。 2.输出单元(output unit),这是计算机的“

  • 计算机系统由硬件(物理设备)系统和软件(程序、数据、文档)系统组成 硬件系统 冯诺依曼:计算机由运算器、控制器、存储器、输入设备、输出设备组成 CPU 组成 运算器:对内存读/写,数据加工处理,受控制器控制 ALU算术逻辑单元:处理数据,实现算术运算和逻辑运算 AC累加寄存器:为ALU提供运算工作区 DR数据缓冲寄存器:存放CPU、内存、外设之间交换的数据 PSW状态条件寄存器:保存算数/逻辑指令

  • 当我尝试构建项目时。生成失败,出现以下消息。 我看到了两个类似的问题,并尝试了答案中提到的一切。 我尝试过的事情。

  • 我有一张表如下: 让我们把每行称为一次运行。我想数数不。在每个中分别为每个运行。我需要使用函数吗?我已经在列。

  • 是否可以使用JsonPath计算成员数? 使用spring mvc测试,我正在测试一个生成 具有 我想确保生成的json中没有其他成员。希望通过使用jsonPath计算它们。可能吗?也欢迎其他解决方案。