一尘不染

使用数组的Java程序对项目进行简单编码

java

我只希望出现“ Jan支出”,但是只有支出出来。我该怎么做?Jan来自我的monthsArrays。缺少什么吗?

import java.util.Scanner;

public class Project {

static int choice;

public static void main(String[] args) {

    {   Scanner input = new Scanner(System.in);
        System.out.println("***************Expenditure***************");
        System.out.println("1)Enter monthly expenses");
        System.out.println("2)Display detailed expenditure by month");
        System.out.println("3)Quick glance at monthly expenses");
        System.out.println("4)Exit");
        System.out.println("Please select your choice <1-3>:");
        choice = input.nextInt();


        switch (choice) {
        case 1:
            int count = 0;
            String[] monthsArray = { "", "Jan", "Feb", "Mar", "Apr", "May",
                    "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };
            System.out.println("*******************************************");
            System.out.println("\t\t\t\t");
            System.out.print("Enter month <1 for Jan - 12 for Dec>:");
            int month = input.nextInt();
            for (int i=0; i < monthsArray.length; i++)
            String monthChoice = monthsArray[month - 1];
            System.out.println("-------------------------------------");
            System.out.println(monthChoice + "expenditure (max 10 items)");

这是我目前得到的输出

*_ __ 支出 _ __ *

1)输入月度费用

2)按月显示详细支出

3)快速浏览每月费用

4)退出

请选择<1-3>:1


输入月份<1月的1月-12月的12月>:1


支出(最多10项)

输入项目1:

如您所见,数组“ Jan”没有出现。


阅读 296

收藏
2020-12-03

共1个答案

一尘不染

从您的外观来看monthsArray,第一个元素是空白字符串。请记住,数组是从零开始的,您要求用户输入介于1到12之间的一个月(这很好,因为没人认为1月是第0个月,对吧?)。在稍后的代码中,您将执行以下操作:

String monthChoice = monthsArray[month - 1];

但是,您的数组实际上包含13个元素,因为您添加了该空格,因此在这种情况下,实际上可以安全地使用未更改的month索引,如下所示:

String monthChoice = monthsArray[month];

或者,删除数组开头的空字符串,并按monthChoice原样保留行(取决于实现的工作方式。这纯粹是您的选择)。

一些注意事项:

您当前monthArray在switch语句的主体中声明您的身份,这是不必要的。最好在方法的顶部声明它,或者甚至更好地将其声明为类中的常量,如下所示:

private static final String[] monthsArray = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };

另外,这一行:

for (int i=0; i < monthsArray.length; i++)

是没有用的。我不知道这是否是未完成的解决方案的一部分,但是它所要做的只是重复紧随其后的语句,据我所知,这是不必要的。基本上与此相同:

for (int i=0; i < monthsArray.length; i++){
    String monthChoice = monthsArray[month - 1];
}

因此,您应该安全地摆脱它。

2020-12-03