2016-03-06 2 views
0

Прежде чем продолжить работу с этим приложением, я понял, что если я поделился программой в соответствии с запросами, я не могу передать вход в переменную n. Это причины в классе(), а не для запуска цикла for. Я попытался поместить фиксированное значение в массив (т. Е. 3 вместо n), и он работает, поэтому это означает, что переменная n по-прежнему находится на 0 после ввода ввода. Настройка приложения для запуска всех в основном методе работает правильно, но я заметил, что я должен объявить переменную внутри основного метода. Что мне нужно сделать, чтобы передать данные в переменную n? Большое спасибо!Вход от сканера не передается переменным?

//code removed 
+2

Пожалуйста, открепите свой код, объясните, что вы делаете, что вы ожидаете, и что произойдет вместо этого. Почему цикл for выполняется? Вы помещаете что-либо в массив 'name' перед вызовом метода grades()? Когда этот массив инициализирован, с 'n' как его длиной, каково значение' n'? Был ли еще выполнен код, который запрашивает у пользователя 'n'? Мой совет: удалите ВСЕ переменные экземпляра. Верните 'n' из display() и передайте его как аргумент grades(). Все остальные переменные должны быть локальными переменными метода оценок. –

+0

Вы пробовали объявить переменную n в основном методе, установив его значение как возвращаемое значение из метода отображения, а затем передали его как аргумент методу оценок? –

+0

Эта программа, кажется, работает просто отлично ... – Aubin

ответ

0

У вас есть глобально инициализированный массив name[]. Итак, что происходит в функции отображения, когда вы вводите значение n между 2 и 25. оно получает глобальную переменную n. Однако ваш строковый массив name уже инициализирован. то есть оно имеет нулевой размер. Он не обновляется до размера n после n был обновлен функцией отображения. Вам необходимо включить строку для инициализации массива name[] после n значение было введено в функцию отображения.

n = in.nextInt(); 
    while ((n < 2) || (n > 25)) { 
     System.out 
       .println(">>>>>>>>>>>>>>>> Please enter a number between 2 and 25 <<<<<<<<<<<<<<<<"); 
     n = in.nextInt(); 
    } 
    name = new String[n]; 
+0

Спасибо. Однако если я точно укажу, как вы говорите, я получаю ошибку: ожидается ". Если я исправлю это с помощью String name [] = new String [n]; он говорит, что переменная уже существует. Если я удалю массивы из суперкласса, и я укажу их внутри нижнего класса, это не сработает. Мне нужно, чтобы указать их в супер-класса, после того, что мне нужно будет создать новые методы для выполнения вычислений и мне нужно обратиться к длине массива, например: \t общественной двойной средней (двойной avgCalc) \t { \t \t для (INT I = 0; я JohnSnow

+0

вы можете предоставить фрагмент кода для функции отображения после внесения изменений для повторной инициализации массива имен. В основном ваш массив имен имеет нулевой размер, вы должны повторно инициализировать его размер. –

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