#java #arrays
#java #массивы
Вопрос:
Я хочу получить последовательность Фибоначчи, введенную пользователем в массив. Задача, поставленная передо мной, заключалась в том, чтобы «Запросить у пользователя ввод 2 целых чисел, которые будут приниматься для первого и второго элементов массива размером 10 массивов».
Вот мой код.
int limit = 10;
int[] fib = new int[limit];
fib[0] = 0;
fib[1] = 1;
for (int j = 1; j < 2; j )
{
System.out.print("Enter number " "[" j "]: ");
num[j] = reader.nextInt();
num[j] = fib[j 1] fib[j 2];
System.out.println("");
}
System.out.print("Result: ");
for(int j = 0; j < limit; j )
{
System.out.print(fib[j] " ");
System.out.print("");
}
Мне очень нужна помощь в этом, я искал решение часами и до сих пор не понимаю.
Комментарии:
1. В приведенном вами вопросе вообще не упоминается последовательность Фибоначчи. Какие проблемы у вас возникли с вашим кодом?
2. Фибоначчи добавляет предыдущие 2 числа к текущему. Если вы посмотрите на свой код, вы принимаете ввод в num[j] с помощью usinf reader.nextInt() . но затем вы снова изменяете это значение в следующей строке. Вот где вы ошибаетесь. Подумайте об этом так. Получите первое число в num[0]. Пока не выполняйте никаких вычислений. Получаем второе число в num[1]. Теперь, начиная с 2 на подопечных, добавьте два предыдущих значения вместе. Это должно дать вам ответ, который вы ожидаете.
3. Неясно, в чем ваша проблема, но вы никогда не инициируете
num
массив перед его использованием, что может вызвать проблемы.4. Проблема в том, что я не понимаю, что означает задача. Но, насколько я знаю, первые 2 целых числа будут использоваться как первое и второе для массива размером 10, который будет отображать результат. Пример: первое целое число: 2 Второе целое число: 3 Результатом будет 2 3 5 8 13…
5. Кроме того, какова цель пользовательского ввода? Похоже, что это нарушит последовательность.
Ответ №1:
Я просто внесу некоторые исправления в ваш код и объясню их:
int limit = 10;
int[] fib = new int[limit];
// fib[0] = 0;
// fib[1] = 1;
// The two lines above are wrong. Even though the real fibonacci sequence starts
// with 0 and 1, the question asks for the first two terms to come from user
// inputs. Instead, you can initialize them below:
// In your old code, you had "j = 1; j < 2; j ". However, that only loops once.
// So, have your condition to be j <= 2 instead: (I'm assuming that you want 1
// and 2 and not zero-based because it should print out "Enter number [1]:" and
// "Enter number [2]:"
for (int j = 0; j < 2; j ) // Not "j < 2"
{
System.out.print("Enter number " "[" j "]: ");
fib[j] = reader.nextInt(); // not num[j] = ..., it's fib[j] = ...
// num[j] = fib[j 1] fib[j 2];
// You don't need this ^^^
System.out.println("");
}
// Now you need to fill in the array:
for (int j = 2; j < limit; j )
{
fib[j] = fib[j - 1] fib[j - 2];
}
System.out.print("Result: ");
for(int j = 0; j < limit; j )
{
System.out.print(fib[j] " ");
System.out.print("");
}
Комментарии:
1. Теперь я понял. Извините, просто новичок в использовании массива
Ответ №2:
Здесь у вас есть ряд ошибок. Попробуйте ответить на следующие вопросы:
-
Какова цель
num
переменной здесь? Вы используете его для ввода (num[j] = reader.nextInt();
), затем вы также используете его для хранения последовательности Фибоначчи (num[j] = fib[j 1] fib[j 2];
)!!! -
Первый цикл выполняется только один раз. Предполагая, что ваши вычисления верны (что не в данном случае!), Он будет иметь значения только для первого числа Фибоначчи.
-
Наконец, когда вы печатаете числа Фибоначчи, вы не используете
num
переменную! Почему?
В любом случае, вот решение вашей проблемы. Но это вам не поможет, если вы не понимаете логику, стоящую за этим, и не знаете, какая строка что делает!!!
int limit = 10;
int[] fib = new int[limit];
for (int j = 0; j < 2; j )
{
System.out.print("Enter number " "[" j 1 "]: ");
fib[j] = reader.nextInt(); // These are the first two fibonacci numbers provided by the user
System.out.println("");
}
System.out.print("Result: ");
for(int j = 0; j < limit; j )
{
if( j > 1 ) // You only calculate from the third Fibonacci, as the first two were given by user
{
fib[j] = fib[j-1] fib[j-2];
}
System.out.print(fib[j] " ");
System.out.print("");
}
Комментарии:
1. Извините, я просто новичок в использовании массива. Вот почему у меня было так много ошибок.
2. Не беспокойтесь! Это происходит в начале. Всего наилучшего!