почему этот метод возвращает ноль?(вызов набора строк из массива) - PullRequest
0 голосов
/ 09 декабря 2011

Я работаю над (что для новичка) довольно сложным заданием. Я думаю, что у меня есть суть, но у меня проблемы с печатью «ноль» после того, как понедельник-воскресенье введены в диалоговое окно. Кроме того, цель назначения состоит в том, чтобы позже пользователь ввел число 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 ]

2 голосов
/ 09 декабря 2011

Ваши ветки имеют недоступные операторы -

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

С Строка # equalsIgnoreCase :

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, является ссылкой на расположение массива в памяти.Это означает, что вы можете манипулировать содержимым массива, и изменение будет отражено в values впоследствии.

0 голосов
/ 09 декабря 2011

Ваша щека для строки, являющейся нулевой, вероятно, не то, что вы хотите.Если вы сделаете отступ в коде, его будет легче увидеть.

После форматирования это то, что у вас есть

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

Итак, если weekArray [0] равен нулю, то вы проверяете, равен ли null equalsIgnoreCase("Понедельник").Эта логика не то, что вы хотите.

После запроса и проверки всех дней вы возвращаете ноль (в конце метода).Это нуль печатается.

0 голосов
/ 09 декабря 2011

Я не знаю, правильно ли я понял, но из беглого взгляда кажется, что вы ошибаетесь в воскресной части, думаю, это должно быть что-то вроде:

if (weekArray[5].equalsIgnoreCase("Sunday")) // Note the "5"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...