Чтение онлайн

на главную - закладки

Жанры

Основы программирования с Java
Шрифт:

Объявление для examScore выделяет достаточно памяти для хранения числа с плавающей точкой типа double. Большинство реализаций для double требует 8 байт, поэтому размер будет отличаться от int, который требует 4 байта.

Подобное выделение памяти будет сделано для labScore, hwScore и finalGrade.

Я буду использовать здесь другой цвет, чтобы проиллюстрировать, что int и double имеют разные требования к памяти.

Поскольку значения не были присвоены для этих переменных, их значения не известны.

Фактически, сначала им должны быть присвоены значения до того, как может быть сделана на них ссылка.

После того, как объявления выполнены, программа предложит пользователю ввести значения для examScore, labScore и hwScore.

Предположим, что пользователь ввел 90,0 для examscore.

Обратите внимание, что даже если пользователь ввел 90, без десятичной точки, значение будет преобразовано в число с плавающей точкой.

Опять же, я использую здесь другой цвет, чтобы отличить double тип от int типа, который находится в синих ячейках.

Аналогично, значение 85,0 вводится для labScore, и 80,5 вводится для hwScore.

Чтобы продолжить выполнение кода, будет выполнен другой оператор присваивания, который изменяет значение examScore.

Вычисление выражения справа от оператора присваивания сначала вычисляет выражение внутри круглых скобок.

Значение examWeight извлекается из памяти, а затем делится на 100,0.

Следует отметить, что examWeight представляет собой целое число, и если оно делилось бы на другое целое число 100, то результатом был бы ноль.

Но так как мы используем 100.0, которое является числом с плавающей точкой, результатом деления будет число с плавающей точкой 0.7.

Значение examScore затем будет извлечено из памяти и умножится на 0,7.

Полученное значение 63,0 затем будет присвоено переменной на левой стороне оператора присваивания.

Результат выражения заменит исходное значение в памяти для examscore новым значением 63.0.

Аналогично, значения для labScore и hwScore обновятся и, наконец, значение finalGrade будет рассчитано путем добавления обновленных значений для examScore, labScore и hwScore.

Полученное значение 88,05 затем будет присвоено участку памяти для finalGrade.

Во время стадии анализа задачи при проектировании исходной задачи, было определено, что веса экзаменов, лабораторных и домашних заданий должны быть предварительно определены, и их значения должны быть одинаковыми для всех студентов в том же курсе.

Если мы хотим предотвратить случайное изменение весов, мы объявим эти идентификаторы как константы, поставив final в качестве ключевого слова в начале объявления.

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

Можно сказать, что, если студент сдал плохо экзамены, но сделал хорошо лабораторные работы, попытка уменьшить вес для экзамена и увеличить вес для лабораторных будет блокирована.

Демонстрация примера

Давайте теперь посмотрим на программу в среде IntelliJ IDEA. Мы откроем проект под названием CourseGrade, который является программой, которую мы только что обсуждали.

Откроем файл CourseGrade в редакторе исходного кода.

И вы можете видеть, что эта программа та, которую мы только что обсуждали.

И эта программа еще не скомпилирована.

Попробуем скомпилировать программу с помощью меню Build Project.

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

Давайте попробуем запустить программу с помощью кнопки Run.

Теперь вы можете видеть, что приглашение ввести ваши оценки экзаменов отображается в окне терминала.

Скажем, что это очень хороший ученик и получил отличные оценки на экзаменах, лабораторных, а также домашних заданиях.

Обратите внимание, что мы вводим с десятичной запятой, 100,0, для каждой из оценок.

И в результате, по какой-то причине, итоговая оценка вернулась программой как 0.0.

Я уверен, что студент будет очень недоволен. Давайте попробуем выяснить, что вызывает эту проблему.

В IntelliJ IDEA, есть очень полезный инструмент отладки, который позволит нам проследить выполнение программы.

Инструмент очень полезен для отслеживания ошибок.

Давайте попробуем выяснить, есть ли какие-либо проблемы после того, как оценки были введены в программу, установив точку останова после объявлений IO.

Для этого просто нажмем на соответствующее место вдоль правого столбца в окне редактора.

Вы можете нажимать в этих местах, чтобы установить или очистить точки останова.

После того, как точка останова устанавливается, IntelliJ IDEA выполняет программу до инструкции, где точка останова была установлена.

Давайте начнем выполнение снова, нажав кнопку Debug.

И введем ту же оценку, 100,0, для экзаменационной оценки, 100,0 для лабораторной.

Давайте попробуем для домашних работ введем просто 100 без 0,0, чтобы сделать преобразование неявного типа, так как переменная hwScore имеет double тип и диапазон значений для int представляет собой подмножество для double.

Поделиться:
Популярные книги

Принадлежать им

Зайцева Мария
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Принадлежать им

Наемный корпус

Вайс Александр
5. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Наемный корпус

Телохранитель Генсека. Том 3

Алмазный Петр
3. Медведев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Телохранитель Генсека. Том 3

Неудержимый. Книга XXI

Боярский Андрей
21. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXI

Тринадцатый VII

NikL
7. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VII

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Древесный маг Орловского княжества 4

Павлов Игорь Васильевич
4. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 4

Зодчий. Книга III

Погуляй Юрий Александрович
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга III

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

Учитель из прошлого тысячелетия

Еслер Андрей
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Учитель из прошлого тысячелетия

Шайтан Иван 4

Тен Эдуард
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Шайтан Иван 4

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5