Java程序使用数组简单编码项目



我只想出现" Jan Depuntution",但是只有支出出来。我该怎么做?Jan是我几个月来的。有什么缺少的吗?

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("tttt");
            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)退出

请选择您的选择&lt; 1-3>:1


输入月份&lt; 1 Jan -12 for dec>:1


支出(最多10个项目)

输入项目1:

您可以看到数组" Jan"没有出现。

您的代码中有一个典型的/- 1错误。

您的几个月阵列在位置0处有一个空字符串,您从一个月开始显示显示的字符串。仅输入2并获得" Jan支出(最大10个项目)",因此应该是一个很好的提示。

monthsArray的外观中,第一个元素是空白字符串。还记得数组基于零,您要求用户一个月在1到12之间(这很好,因为没人认为一月为0个月,对吗?)。在您的代码稍后,您要这样做:

String monthChoice = monthsArray[month - 1];

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

String monthChoice = monthsArray[month];

或在数组开始时摆脱空字符串,并按原样离开您的monthChoice行(取决于您的实现方式。这纯粹是您的选择)。

一些旁注:

您目前在开关语句的正文中声明您的monthArray,这是不必要的。最好将其声明在方法的顶部,甚至更好地为班级的常数,例如:

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];
}

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

最新更新