【问题标题】:Initializing an array into a class definition将数组初始化为类定义
【发布时间】:2013-02-23 23:08:13
【问题描述】:

所以,我正在做一个编程任务,任务是编写一个程序来打印给定月份和年份的日历。我正在编写类来跟踪一周中的某一天的名称(周一、周二、周三等),并且我试图给它 3 个参数:一天的名称、一个字符串、一个int index,要引用第三个,所有工作日的数组。我的开场代码是这样的:

public class Day
{

private String weekDay;
private String[] weekDays;
private int dayIndex;

weekDays = new String[7];

weekDays[1] = "Sunday";
weekDays[2] = "Monday";
weekDays[3] = "Tuesday";
weekDays[4] = "Wednesday";
weekDays[5] = "Thursday";
weekDays[6] = "Friday";
weekDays[7] = "Saturday";`

尝试执行此操作时遇到错误,即使我的数组初始化语法正确。我猜这首先与类定义中数组的初始化有关?

我教授建议的原始设计没有索引,只有weekDayweekDays[] 变量。我根本不确定数组的用途,所以我想我会使用索引并以这种方式以数字方式跟踪日期。显然它不起作用。所以一:我上面的解决方案有什么问题,二:有谁知道 Day 类的初衷是用这两个参数吗? The Idea of​​ the Day 课程本来可以帮助确定特定年份的特定月份从一周中的哪一天开始,但我不确定如何。

谢谢。对不起,如果我违反了礼节。

【问题讨论】:

  • 不要忘记在 Java 中数组是从 0(而不是 1)开始索引的。
  • 在 7 点之前访问 weekDays 将引发 IndexOutOfRangeException

标签: java arrays class


【解决方案1】:

您遇到了什么错误?我不是 java 但你的数组不应该从 0 开始吗​​?

weekDays[0] = "Sunday";

【讨论】:

【解决方案2】:

你为什么不试试:

private String[] weekDays =  new String[] {"Sunday", "Monday", 
                             "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

【讨论】:

    【解决方案3】:

    数组是从零开始的,因此当您尝试分配最后一个String 时,从1 而不是0 开始将产生ArrayIndexOutOfBoundsException

    weekDays[7] = "Saturday";`
    

    此外,非声明性语句需要在方法、构造函数或静态初始化程序中,而不是在类块中。

    您可以声明 weekdays 以包含这些值,而不是单独分配值:

    private String[] weekDays = { "Sunday", "Monday", ... };
    

    这种方法不需要您指定数组索引值。

    【讨论】:

    • 好的,我会尝试最后一个声明解决方案,看看是否可行。无论如何,这就是我想要完成的事情。谢谢。希望以后我不会再遇到问题。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多