2013-12-04 2 views
2

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

for (int i = 0; i < 10; i++) { 
    if (studentNamesArray[i] != null) { 
    studentFound = true; 
    System.out.println("Which student would you like to delete?"); 
    System.out.println(i + ": " + studentNamesArray[i]); 
    int studentChoice = input.nextInt(); 
    } 
} 

Массив:

static String[] studentNamesArray = new String[10];

Проблема в том, что это только печать index[0]. Как я могу это исправить?

EDIT:

Вот мой полный код:

static void deleteStudent() { 
    boolean studentFound = false; 
    for (int i = 0; i < 10; i++) { 
     if (studentNamesArray[i] != null) { 
     studentFound = true; 
     System.out.println("Which student would you like to delete?"); 
     System.out.println(i + ": " + studentNamesArray[i]); 
     } 
     int studentChoice = input.nextInt(); 
     for (i = 0; i < 10; i++) { 
     for (i = studentChoice + 1; i < studentNamesArray.length; i++) { 
      studentNamesArray[i - 1] = studentNamesArray[i]; 
     } 
     nameArrayCount = nameArrayCount - 1; 
     studentNamesArray[studentNamesArray.length - 1] = null; 
     for (i = studentChoice + 1; i < 9; i++) { 
      for (int y = 0; y < 3; y++) { 
      studentMarksArray[i - 1][y] = studentMarksArray[i][y]; 
      } 
     } 
     markArrayCount = markArrayCount - 1; 
     for (int y = 0; y < 3; y++) { 
      studentMarksArray[9][y] = 0; 
     } 
     } 
    } 
    if (!studentFound) { 
     System.out.println("There are no students stored"); 
    } 
    } 
+1

Из этого кода, выход никогда не будет 'индекс [0]' –

+2

ли вы задать вопрос 'Какой студент вы хотите удалить?' 10 раз? Зачем? –

+0

@ AycanYaşıt Он спрашивает только раз, когда studentNames не имеет значения. –

ответ

4

Использовать for-loop только для печати имен студентов. И прочитайте studentChoice один раз после того, как вы напечатали всех учеников. В противном случае она ожидает ввода после печати studentNamesArray[0]

System.out.println("Which student would you like to delete?"); 
for (int i = 0; i < 10; i++) { 
    if (studentNamesArray[i] != null) { 
    studentFound = true; 
    System.out.println(i + ": " + studentNamesArray[i]); 
    } 
} 
int studentChoice = input.nextInt(); 
+0

Это не похоже на работу, я разместил свой код в своем сообщении – Colin747

+0

В коде вы отправили строку : int studentChoice = input.nextInt(); все еще находится в for-loop. Вы только выставляете это из условия if. – kai

+0

ahh извините, я, должно быть, пропустил скобку! Кажется, он работает как ожидалось сейчас – Colin747

1

Убедитесь, что содержимое массива не равно нулю, или они не будут печатать

+0

Я ввел десять элементов, но только первый – Colin747

+0

- это действительно введенные элементы, попробуйте взять «if (studentNamesArray [i]! = null) {...}' и посмотреть, что распечатывает –

+0

С удаленной только строкой остается только первый элемент – Colin747

1

Единственная причина, я могу увидеть здесь , другие элементы должны быть null. Вы можете убедиться, что следующим

for (int i = 0; i < 10; i++) { 
    if (studentNamesArray[i] != null) { 
     studentFound = true; 
     System.out.println("Which student would you like to delete?"); 
     System.out.println(i + ": " + studentNamesArray[i]); 
     int studentChoice = input.nextInt();// you need to check this 
    }else{ 
     System.out.println(i + ": " + studentNamesArray[i]); 
    } 
    } 

Но может быть есть другая причина. Если input.nextInt() берет с Scanner, ваша программа будет ждать ввода пользователем. Затем вы должны предоставить этот ввод для продолжения. Убедитесь в этом.

+0

I ' я добавил остальную часть своего кода, я попытался переместить входной сигнал вне цикла for, но то же самое происходит – Colin747

Смежные вопросы