为什么这个方法返回null? (从数组中调用一组字符串)

时间:2011-12-09 05:42:34

标签: java arrays string

我正在研究(对于初学者来说)一项相当复杂的任务。我想我已经得到了它的要点,但我遇到了麻烦,在星期一到星期日打印“null”进入对话框。此外,分配的目标是,稍后,用户输入数字0-6,然后打印相应的工作日(来自方法中设置的String [] weekArray)。我不是很确定如何做到这一点,我的书似乎没有告诉我的方式,但我甚至能够按照我的代码设置的方式做到这一点吗?谢谢和最好的问候。这是代码。

编辑 - 在我的书中有一个例子,它从一个方法返回一个数组。我不确定它是否适用于我的任务,因为它们似乎有不同的目标,但在这里它是..

编辑#2 - 参考我正在做的事情的说明。

编辑#3 - 我对将方法传递给数组的示例的解释。

编辑#4 - 解决了这个问题。我对此采取了错误的方式。这本书的例子没什么帮助。感谢那些回复的人。考虑到教授(可能不喜欢下学期在互联网上的作业),我删除了作业作业描述。

以下代码的摘录......我这样做比这更复杂

public static String[] getWeek() {
    String[] weekArray = new String[7];
for (int i = 0; i < weekArray.length; i++) {
    weekArray[0] = JOptionPane.showInputDialog("Enter 'Monday'. ");
    if (weekArray[0].compareTo("Monday") > 0) {
        weekArray[0] = JOptionPane.showInputDialog("Enter 'Monday'. ");

3 个答案:

答案 0 :(得分:2)

您的分支机构无法访问语句 -

weekArray[5] = ...
while(weekArray[5].equalsIgnoreCase(null)) {
  // Cannot reach this point as equalsIgnoreCase(null) always returns false.
}

来自String#equalsIgnoreCase

  

true 如果参数不为null 且字符串相等,则忽略大小写;否则就是假的。

强调我的。

编辑:从上面的编辑中,您似乎在填充数组时遇到问题。粗略的想法是:

public static void main(String[] args) {
  // Just an example
  int[] values = new int[5];
  System.out.println(Arrays.toString(values));

  populateArray(values);
  System.out.println(Arrays.toString(values));
}

private static void populateArray(int[] toBePopulated) {
  toBePopulated[0] = 42;
  toBePopulated[1] = 11;
  // Etc. Again, just an example.
}

这将打印:

  

[0, 0, 0, 0, 0]

     

[42, 11, 0, 0, 0]

这个想法是传递给方法populateArray的是对数组在内存中的位置的引用。这意味着您可以操作数组的内容,然后更改将反映在values中。

答案 1 :(得分:0)

我不知道我是否做得对,但是从粗略的看,似乎你错了周日的部分,猜猜它应该是这样的:

if (weekArray[5].equalsIgnoreCase("Sunday")) // Note the "5"

答案 2 :(得分:0)

你的字符串为null的脸颊可能不是你想要的。如果你缩进代码就会更容易看到。

格式化后,这就是你拥有的

    while (weekArray[0].equalsIgnoreCase(null)) {
        if (weekArray[0].equalsIgnoreCase("Monday")) 
            return weekArray[0];
    }

因此,如果weekArray [0]为null,则检查null equalsIgnoreCase(“Monday”)。这个逻辑不是你想要的。

在询问并检查所有日期后,您返回null(在方法结束时)。这是印刷的空白。