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

Java 为什么这个方法返回null?(从数组调用一组字符串),java,arrays,string,Java,Arrays,String,我正在做(对初学者来说)一项相当复杂的作业。我想我已经记下了它的jist,但是在星期一和星期天进入对话框后,我在打印“null”时遇到了问题。此外,分配的目标是,稍后用户输入数字0-6,然后打印相应的工作日(来自方法中设置的字符串[]weekArray)。我真的不知道该怎么做,我的书似乎也没有告诉我该怎么做,但我甚至可以用我的代码设置的方式来做吗?谢谢,并致以最良好的问候。这是密码 编辑-在我的书中,有一个例子是从方法返回数组。我不确定这是否适用于我的任务,因为他们似乎有不同的目标,但在这里 编

我正在做(对初学者来说)一项相当复杂的作业。我想我已经记下了它的jist,但是在星期一和星期天进入对话框后,我在打印“null”时遇到了问题。此外,分配的目标是,稍后用户输入数字0-6,然后打印相应的工作日(来自方法中设置的字符串[]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'. ");
public静态字符串[]getWeek(){
String[]weekArray=新字符串[7];
对于(int i=0;i0){
weekArray[0]=JOptionPane.showInputDialog(“输入“星期一”);

我不知道我是否理解正确,但粗略地看一下,似乎你误解了周日部分,我猜应该是这样的:

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

您的分支具有无法访问的语句-

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

如果参数不为null且字符串相等,则为true,忽略大小写;否则为false

我的

编辑:通过上面的编辑,您似乎在填充数组时遇到了问题。大致思路是:

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
的是对数组在内存中位置的引用。这意味着您可以操作数组的内容,并且更改将在
值中反映出来。

字符串为null可能不是您想要的。如果缩进代码,这样更容易看到

格式化后,这就是您所拥有的

    while (weekArray[0].equalsIgnoreCase(null)) {
        if (weekArray[0].equalsIgnoreCase("Monday")) 
            return weekArray[0];
    }
因此,如果weekArray[0]为null,则检查是否为null equalsIgnoreCase(“星期一”)。此逻辑不是您想要的


在询问并检查所有天数后,返回null(在方法末尾)。这是正在打印的空值。

这肯定是我的一个错误,感谢您捕捉到它,它似乎并没有导致空值问题。啊,谢谢,我认为这可能是一个问题。不过,我将其设置为空值的唯一原因是没有while语句,程序在我输入第一个响应后停止运行e、 我应该取出while语句并找到另一种方法,还是修改while语句?您没有将其设置为null,而是将其与null进行比较。将其设置为null类似于
weekArray[5]=null;
。还要注意您的程序流程:
return
将缩短
getWeek
方法的其余部分,并返回到您的
main
,这将导致它在第一次响应后停止运行。@user1082706看起来像是您编辑了您的注释,我也将删除我的编辑!我只是编辑了它,因为我正在尝试o在代码中粘贴,看起来很糟糕。我得到的是这样的东西..while(weekArray[0]。equalsIgnoreCase(“y”)语句;等等。它无论如何都不起作用。@user1082706如果你要添加更多的代码,那么值得编辑你的问题并添加文本编辑:然后是下一部分。这样你可以很好地格式化你的代码。谢谢。我仍在做这件事。如果我还有任何问题,我会告诉你。不确定该怎么办。星期五在哪里?Rebbeca Black要发火了……哈哈,其实这不是作业中的内容,我想他是无意中漏掉的,但我一开始没有把它包括在内,因为我认为他这样做是为了让我们四处走动。当数组从方法传递到while循环后,我意识到我无法做which至少他想不用“星期五”,谢谢。