【问题标题】:Java program using arrays simple coding for project使用数组的Java程序简单的项目编码
【发布时间】:2014-01-29 15:06:24
【问题描述】:

我只想显示“Jan Expenditure”,但只显示支出。我该怎么做? 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


输入月份 :1


支出(最多 10 项)

输入第 1 项:

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

【问题讨论】:

  • 用户必须选择月份的部分。我用了几个月的数组。但是,当“用户”选择 1.“Jan”时不会出现。我想要的输出是:“Jan Expenditure”,但它唯一的“出现的支出”
  • 这不是 stackoverflow 的工作方式。如果您遇到问题或之前未在此处回答过的“未知”,您需要先尝试并在此处发布。另外,要求“可能的编码方式”与要求其他人为你工作一样危险。
  • @user3249322 你能发布你的代码吗?
  • @Teeg 我已经开始了这个项目,只是有些部分我似乎无法弄清楚。看,我刚开始学习编程,真的需要一些帮助。如果你不想帮助那没关系。谢谢。
  • @Teeg 我已经粘贴了我的代码。这只是我所做的一部分。

标签: java arrays project


【解决方案1】:

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

您的monthsArray 在位置0 有一个空字符串,您从-1 月获取显示的字符串。简单地输入 2 并得到“一月支出(最多 10 项)”作为结果应该是一个很好的提示。

【讨论】:

    【解决方案2】:

    从您的monthsArray 看来,第一个元素是一个空白字符串。请记住,数组是从零开始的,并且您向用户询问了 1 到 12 之间的一个月(这很好,因为没有人认为 1 月是第 0 个月,对吧?)。稍后在您的代码中,您可以这样做:

    String monthChoice = monthsArray[month - 1];
    

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

    String monthChoice = monthsArray[month];
    

    或者,删除数组开头的空字符串,并保留您的 monthChoice 行(取决于您的实现应该如何工作。这完全是您的选择)。

    一些旁注:

    您目前在 switch 语句的主体中声明您的 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];
    }
    

    所以你应该安全地摆脱它。

    【讨论】:

    • 谢谢!对于之前的任何误解,我深表歉意。我只是编程的初学者,我真的非常渴望帮助,因为我必须向我的导师展示我的项目以及它是如何进行的,明天早上。我已经进行了更改,现在可以使用了!
    • @cjmalacaman 完全没问题。作为初学者非常酷,我们都必须从某个地方开始。请记住,获得帮助(尤其是在本网站上)的最佳方式是尽可能具体地说明您遇到的问题。祝您工作顺利(以及未来的 stackoverflow-ing)。另外,不要忘记为好的/有帮助的答案投票,并“接受”对您帮助最大的答案(点击答案左侧的绿色复选标记)。
    • 是的!没问题。这个网站肯定会对我有很大帮助。希望在我以后的问题中也能得到你的帮助,因为我真的很喜欢你的详细回答
    猜你喜欢
    • 2015-01-17
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多