我正在研究(对于初学者来说)一项相当复杂的任务。我想我已经得到了它的要点,但我遇到了麻烦,在星期一到星期日打印“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'. ");
答案 0 :(得分:2)
您的分支机构无法访问语句 -
weekArray[5] = ...
while(weekArray[5].equalsIgnoreCase(null)) {
// Cannot reach this point as equalsIgnoreCase(null) always returns false.
}
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(在方法结束时)。这是印刷的空白。