StacyZviozdohkina
02.12.2021 17:50

Программа работает некорректно понять причины. Есть вот такая запись:
public class StudentsPD
{
private String[] array = new String[10];
private int size = 0;

public void addStudent (String str)
{
array[size] = str;
size += 1;
if (size == array.length)
{
String[]newArray = new String[array.length * 2];
for (int i = 0; i < array.length; i++)
{
newArray[i] = array[i];
}
array = newArray;
}
}

и вот такая:

import java.util.Scanner;

public class Main
{
public static void main (String[]args)
{

Scanner read = new Scanner (System.in);

StudentsPD follower = new StudentsPD ();
System.out.println ("Skol'ko ychenikov vvesti?");
int nYch = read.nextInt ();

for (int i = 0; i <= nYch; i++)
{
System.out.println ("input name " + (i));
follower.addStudent (read.nextLine ());
}

если делать ввод количества учеников с клавиатуры ( оставить на месте строчку int nYch = read.nextInt ();), то при запуске последующего цикла программа пишет подряд две строки:
input name 0
input name 1

и соответственно принимает значения начиная со второго, т.е. если пользователь хочет ввести данные для 5 учеников, то программа примет данные только для 4. попытки запускать цикл не от 0, а от 1 ничего не меняют,.

Однако, если убрать строки
System.out.println ("Skol'ko ychenikov vvesti?");
int nYch = read.nextInt ();
и вместо них написать int nYch=5 то программа корректно запрашивает данные для ученика 0, потом для ученика 1 и т.д., т.е. выводит все корректно. Что не так? почему не работает при вводе nYch с клавиатуры также как при задании его значения в теле программы?

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
kseniyes5454
11.08.2021 19:33

Решение #1

Просто вбиваешь код в любой редактор кода с питоном, в конце добавляешь print(i, S) и получаешь ответ.

Решение #2

Заметим, что код внутри while выполнится 3 раза, т.к. после третьего выполнения переменная i будет равна 3, и цикл while перестанет работать. Следовательно, переменная S также будет три раза увеличиваться на i.

при i == 0: i = 0 + 1 = 1; S = 0 + 1 = 1;при i == 1: i = 1 + 1 = 2; s = 1 + 2 = 3;при i == 2: i = 2 + 1 = 3; S = 3 + 3 = 6;при i == 3: код внутри while не выполняется.

Получим, что переменная i в итоге стала равна 3, а S — 6.

В ответе сначала указываем i, а затем S.

ответ: В (3, 6).

0,0(0 оценок)
Ответ:
Аиляра
13.03.2021 14:53

Процесор:Intel Core i9-10900F 2.8-5.2 GHz

Відеокарта:GeForce RTX 3080, 10GB

Оперативка:16GB (8GBx2) DDR4 3000 MHz

Материньска Плата:ASRock B460 Steel Legend

HDD,SSD2.5:1TB / HDD Toshiba 7200RPM

SSD 2.5 не уставновлен

SSD M.2:256GB / SSD M.2 GOODRAM PX500

Блок питания:750W / CoolerMaster MWE White V2

Корпус:1stPlayer AR-7-G6-PLUS Black.

4.Процесор тому що:(10-ЯДЕР, 20-ПОТОКОВ) 2.8-5.2 GHz Turbo, Comet Lake

Материнську плату тому що:1200, фаз питания

Материньска Плата Обов'язково.

3.GTA 5

ВЫСОКИЕ

1920 Х 1080 (FULL HD)

235 FPS

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота